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
,{{1 }}。输出应该是:“defcab”。
假设单词不是j = 3
且null
和i
不在界外,则代码可以正常工作。我想知道,对于任何给定长度的字符串,这个程序是否通过这种方法在内存中占用恒定空间。
答案 0 :(得分:1)
在Java中,String
是不可变的。致电substring
会产生新的String
。
如果您的String word
长度为n
,则最终会生成总长度为n
的子字符串。
StringBuilder
的大小是不变的。每个String
中存储的元数据也是不变的。字符串的长度有什么变化。
因此,不,这种方法不使用常量空间,而是使用n
空格。