java - 如何找到两个字符串中导致它们不相等的字符?

标签 java

我想在两个字符串中找到使它们不相等的字符并打印它们。

例如:

String str1 = "abcd";
String str2 = "abc";

输出=“d”

我使用的代码如下所示:

public void removeUnequalChars() {
String str1 = "abcd";
String str2 = "abc";



    String commonChars = "";

    for (int i = 0; i < str.length(); i++) {
        for (int j = 0; j < str2.length(); j++) {
                if (str.charAt(i) == str2.charAt(j)) {
                    commonChars += str.charAt(i);
                }
            }
        }

        for(int i = 0; i < commonChars.length(); i ++)
        {
            String charToRemove = commonChars.charAt(i)+"";
            str = str.replace(charToRemove, "");
            str2 = str2.replace(charToRemove, "");

        }


        String s3= str+str2;

        System.out.println(s3);
}

但是代码的问题是,如果我们有重复的字符,这个解决方案就不起作用。 例如:

String str1 = "abccd";
String str2 = "abc";

预期输出是“cd”,但上面的代码只打印“d”

有什么办法可以解决这个问题吗?

最佳答案

您可以使用 str.replaceFirst() 来保留其他出现的字符,而不是使用 str.replace()。

您还只需使用较短的字符串代替 commonChars,然后跟踪较短字符串中较长字符串中没有的任何字符。

所以它看起来像:

public String uncommonCharacters(String str, String str2){
    String shorterString;
    String longerString;

    if (str.length() < str2.length()){
        shorterString = str;
        longerString = str2;
    } else {
        shorterString = str2;
        longerString = str;
    }

    StringBuilder charsNotInLongString = new StringBuilder();
    for(String charToRemove : shorterString.split("")) {
        String newLongerString = longerString.replaceFirst(charToRemove, "");
        if (newLongerString.equals(longerString)) {
            charsNotInLongString.append(charToRemove);
        } else {
            longerString = newLongerString;
        }
    }

    return longerString + charsNotInLongString.toString();
}

编辑:woops 没有意识到它被添加到 commonChars 中两次,并根据评论进行更新。

更新:刚到家,更新更漂亮了

关于java - 如何找到两个字符串中导致它们不相等的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52881791/

相关文章:

java - 通过 Java 将 Ubuntu 10.4 连接到 MS SQL DB 的问题

java - 我的JDBC sql语句有什么问题

java - 分区方法求助!用于快速排序方法

java - 解码从 XML 文件中检索到的特殊字符

java - 无法通过 XML 配置 Autowiring Spring session bean

java - 使用 JDBC 连接到云中托管的 MongoDB 时出错

java - 使用 Java GitHub API 搜索存储库时如何获得超过 100 个结果?

java - 为单个字符串设置字体?

java - Java 中的 FileOutputStream 问题

java - "aapt"IOException 错误=2,没有这样的文件或目录 "why can' t 我在 Jenkins 上构建我的 gradle?