java - 在整个字符串中插入一个字符

标签 java string

您好,我正在尝试在字符串中的所有字符之间插入破折号。我已经这样做了,但它不起作用:

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/

相关文章:

java - 是否可以在 Selenium 中设置元素的背景颜色

java - Tomcat : How to share data between two applications?

java - 使用 java 使用字符串和矩阵生成特定模式

java - 在 Java 中拆分 InputStream 接收的字符串

java - BufferedImage像素值问题

java - 用于删除 Postgresql 中逻辑冗余条目的 Cron 作业

java - Play Framework 注解顺序

c++ - binary_search 不适用于 vector <string>

r - 从字符串中删除重复单词的最短方法

Java设置方式在输出中提供一定数量的空格?