我需要找到两个字符串之间不匹配的字符数。目前我通过将字符串转换为字符数组并逐个元素比较来做到这一点。
有没有其他方法可以实现上述要求。
注意:将字符串视为小写
输入:
输入
输出
输出 :
2
StringUtils
在 Apache commons.lang 中有一个获取两个字符串的 Levenshtein 距离的方法。
这是您描述的方式,但它是最简单的实现方式:
int counter = 0;
for(int i = 0; i < str1.length(); i++) if(str1.charAt(i) != str2.charAt(i)) counter++;
它们只需两行代码即可,无需显式创建一个全新的字符数组。
如果这两个字符串的大小不同,则以下代码将返回字母的完全不匹配。
你可以试试这个——
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);
}
您将不得不检查输入是否有一些数据。我没有做过那个检查。