public static String switchString(String word, int i, int j) {
StringBuilder newString = new StringBuilder();
newString.append(word.substring(j, word.length()));
newString.append(word.substring(i + 1, j));
newString.append(word.substring(0, i + 1));
return newString.toString();
}
对于给定的输入String
和索引i
和j
,代码应该执行如下操作:if word = “abcdef”
和 i = 1
、j = 3
。输出应该是:“defcab”。
假设该单词不是 null
并且 i
和 j
没有越界,则代码可以正常工作。我想知道,对于任何给定长度的字符串,该程序是否通过这种方法在内存中占用恒定的空间。
最佳答案
在 Java 中,String
是不可变的。调用 substring
会生成一个新的 String
。
如果您的字符串单词
的长度为n
,则最终会生成总长度为n
的子字符串。
无论StringBuilder
的大小是恒定的。每个String
中存储的任何元数据也是不变的。改变的是字符串的长度。
因此,不,这种方法不使用常量空间,而是使用 n
空间。
关于java - 对于任何给定的输入,代码是否在内存中占用恒定的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075606/