Java 查找两个字符串之间的不匹配数

Java 查找两个字符串之间的不匹配数,java,string,arrays,mismatch,Java,String,Arrays,Mismatch,我需要找到两个字符串之间不匹配的字符数。目前,我通过将字符串转换为字符数组并逐个元素进行比较来实现这一点 是否有其他方法可以达到上述要求 注释:将字符串视为小写 输入: 输入 输出 输出: Apache commons.lang中的StringUtils有一个用于获取两个字符串的Levenshtein距离的函数。如果两个字符串大小不同,则以下代码返回字母表的完全不匹配 你可以试试这个- String ip1 = "input"; // input1 String ip2 = "

我需要找到两个字符串之间不匹配的字符数。目前,我通过将字符串转换为字符数组并逐个元素进行比较来实现这一点

是否有其他方法可以达到上述要求

<强>注释:将字符串视为小写

输入:

输入

输出

输出:


Apache commons.lang中的StringUtils有一个用于获取两个字符串的Levenshtein距离的函数。

如果两个字符串大小不同,则以下代码返回字母表的完全不匹配

你可以试试这个-

    String ip1 = "input"; // input1
    String ip2 = "utput"; // input2
    int count = 0; // difference in string
    String ipx2 = ip2;
    for (int j = 0; j <= ip2.length(); j++) {
        int value = ip1.indexOf(ipx2);
        if (value != -1) {
            if (("").equals(ipx2)) { // if the second string is blank after continous reducing
                count = ip1.length() + ip2.length();
            } else {
                count = ip1.length() + ip2.length() - 2 * ipx2.length();
            }
            break;
        } else {
            count = ip1.length() + ip2.length(); // if there is no match at all
        }
        ipx2 = ip2.substring(j);
    }
    System.out.println("" + count);
}
String ip1=“输入”//输入1
字符串ip2=“输出”//输入2
整数计数=0;//弦差
字符串ipx2=ip2;

对于(int j=0;j这是您描述的方式,但它是实现以下功能的最简单方式:

int counter = 0;
for(int i = 0; i < str1.length(); i++) if(str1.charAt(i) != str2.charAt(i)) counter++;
int计数器=0;
对于(inti=0;i

它们只适用于两行代码,而无需显式创建一个全新的字符数组。

还有其他方法,但没有更好的方法。只需小心不同大小的单词。您的变体很好。什么输出:“input”“iInput”你期望吗?你真的只想知道不匹配的数量还是更高级的东西,比如单词之间的编辑距离?很好奇……我同意。如果你比较
a12345
12345
,你有一个差异,还是五个差异?你需要处理整个字符串,并根据需要进行移位,以对齐类似的连接这很好,但肯定不是他想要的…除非可以手动设置运营成本并设置“删除”和“插入”到一个非常高的值。但即使这样,这将是一个巨大的开销。@Baz,我认为它会更好,因为Levenstein distance定义了将一个字符串转换为另一个字符串所需的操作数,本质上,这是OP正在做的,但Levenstein允许删除和插入。这不是OP想要的。他想要的是hamming dista这并不意味着我个人不愿意levenstein@Baz,同意,只是认为OP需要更清楚地定义他的目标:)@codeBrickie谢谢..,但看起来其中一个字符串被修改以发现不匹配,输入字符串不应该更改,只有当两个字符串长度相同时才可以。加上这个。。。if(str1.length()