java - 组合字符串 - 相同字符的运行保持在一起

标签 java eclipse string

我正在创建一个代码,它将两个给定的字符串组合在一起,并通过交替两个字符串中的字符来获取一个字符串。 例如:“xyz”和“abc”将得到“xaybzc”

我遇到的问题是,对于同一字符的任何运行,这些字符应该保持在一起。 例如:“abc”和“xyyz”将得到“axbyycz”

这是我写的:

public static java.lang.String interleaveWithRuns(java.lang.String s,    java.lang.String t)
{
    String str = "";
    int i = 0;
    while(i < s.length() && i < t.length())
    {
        if(s.charAt(i) == s.charAt(i + 1))
        {
            str += s.charAt(i) + s.charAt(i+1);
        }
        if(t.charAt(i) == t.charAt(i+1))
        {
            str += t.charAt(i) + t.charAt(i+1);
        }
        str += s.charAt(i) +""+ t.charAt(i); 
        i++;
    }
    while(i < s.length())
    {
        str += s.charAt(i); 
        i++;
    }
    while(i < t.length())
    {
        str += t.charAt(i); 
        i++;
    }
    return str;
}

我知道这部分是问题所在,但我不确定应该做什么来解决这个问题。

 if(s.charAt(i) == s.charAt(i + 1))
 {
     str += s.charAt(i) + s.charAt(i+1);
 }
 if(t.charAt(i) == t.charAt(i+1))
 {
     str += t.charAt(i) + t.charAt(i+1);
 }

最佳答案

对于这个特定问题,您应该以不同的方式跟踪 2 个字符串的迭代器。所以这不能通过单个迭代器变量 i 来完成。您需要i对于字符串sj对于字符串t .

此外,为了避免遇到数组越界错误,特别是当相同字符位于任何字符串末尾时,两个字符串的 if 条件中都添加了短路条件。像这样:(i < s.length() - 1) && further condition

以下是对 interleaveWithRuns 的更改功能。

public static java.lang.String interleaveWithRuns(java.lang.String s,
        java.lang.String t) {
    String str = "";
    int i = 0;
    int j = 0;
    while (i < s.length() && j < t.length()) {
        if ((i < s.length() - 1) && (s.charAt(i) == s.charAt(i + 1))) {
            str += String.valueOf(s.charAt(i))
                    + String.valueOf(s.charAt(i + 1));
            str += String.valueOf(t.charAt(j));
            i++;
        } else if ((j < t.length() - 1) && (t.charAt(j) == t.charAt(j + 1))) {
            str += String.valueOf(s.charAt(i));
            str += String.valueOf(t.charAt(j))
                    + String.valueOf(t.charAt(j + 1));
            j++;
        } else {
            str += s.charAt(i) + "" + t.charAt(j);
        }
        i++;
        j++;
    }
    while (i < s.length()) {
        str += s.charAt(i);
        i++;
    }
    while (j < t.length()) {
        str += t.charAt(j);
        j++;
    }
    return str;
}

希望这有帮助。

关于java - 组合字符串 - 相同字符的运行保持在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35858115/

相关文章:

c - 'Table1' 未声明(在此函数中首次使用)

java - 如何有效地小写集合的每个元素?

c++ - 在字符串中查找项目并说出何时找到它 - C++

java - 即使我的Java主页旨在Java 8,gradle仍会引用Java 6

java - Intellij 格式化。与正文不同的缩进的中断方法

c++ - 为什么在 Eclipse 中出现 "unrecognised emulation mode: 32"错误?

eclipse - .gitignore 文件在每次项目发生变化时添加 "/bin/"

java - 状态模式java

文本区域中的 JavaFX 多种颜色(JavaFX 8)

Java String split 删除了空值