您好,我正在尝试在字符串中的所有字符之间插入破折号。我已经这样做了,但它不起作用:
public static String expand (String word)
{
int stringLength = word.length();
for (int x=0; x<stringLength; x++){
word = new StringBuffer(word).insert(x, "-").toString();
}
return word;
}
它会在单词之前产生破折号。我不明白为什么它不起作用。谢谢。
最佳答案
没错,所有破折号都插入在单词之前。这是如何发生的:当您插入第一个破折号时,索引一处的内容会移动一个字符,因此当您在下一个位置插入破折号时,您会在前一个破折号之后插入它:该单词不断移动离开,所以你的循环行为就像一只狗追逐自己的尾部!
有多种方法可以解决此问题:
- 在偶数位置插入破折号,即
2*i
- 从一个空的
StringBuffer
开始,循环遍历原始字符,然后添加一个字符,后跟一个破折号;当到达最后一个字符时,不要添加破折号。
请注意,第二种方法更有效,因为它与原始单词中的字符数呈线性关系。第一种方法(即基于插入的方法)效率较低,因为需要在每次插入时移动缓冲区的尾部,因此它的时间复杂度为 O(n2)。
关于java - 在整个字符串中插入一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22002447/