查看一个字符串是否与另一个相同长度的字符串匹配且 X 允许不匹配的最快/最清晰的方法是什么?是否有一个库可以做到这一点,它不在 Apache stringUtils 中(只有一个也使用插入/删除)。
所以可以说我有 2 个长度的字符串,我想知道它们是否与允许的 1 个不匹配匹配。不允许插入和删除。
所以:
ABCD <-> ABCD = 匹配
ABCC <-> ABCD = 匹配 1 个不匹配
ACCC <-> ABCD = 不匹配,2 个不匹配太多了。
尝试将字符串存储在 char 数组中 (char[] charArray = String.toCharArray())。
char[] stringA = firsString.toCharArray();
char[] stringB = secondString.toCharArray();
int ctr = 0;
if(stringA.length == stringB.length){
for(int i = 0; i<stringA.length; i++){
if(stringA[i] == stringB[i]){
ctr++;
}
}
}
//do the if-else here using the ctr
String str1, str2;
假设字符串的长度相等:
int i = 0;
for(char c : str1.toCharArray())
{
if(c != str2.charAt(i++))
counter++;
}
if(counter > 1)
// mismatch
一次比较字符串一个字符。保留一个计数器来计算不匹配。当计数器超过限制时,返回false。如果到达字符串末尾,返回true
如果您想要最快的方式,您应该从现有算法(如“近似 Boyer-Moore 字符串匹配”或后缀树方法)对其进行编码......
看这里:https ://codereview.stackexchange.com/questions/13383/approximate-string-matching-interview-question
他们做数学,你做代码......
其他有趣的 SO 帖子是: