在X允许不匹配的情况下,查看字符串是否与另一个相同长度的字符串匹配的最快/最清晰的方法是什么?是否有可以执行此操作的库,它不在Apache stringUtils中(只有一个也使用插入/删除)。
所以我想说我有两串长度,我想知道它们是否与允许的1个不匹配相匹配。不允许插入和删除。
所以:
ABCD< - > ABCD =匹配
ABCC< - > ABCD =匹配1个不匹配
ACCC< - > ABCD =不匹配,2个不匹配太多。
答案 0 :(得分:1)
String str1, str2;
假设字符串的长度相等:
int i = 0;
for(char c : str1.toCharArray())
{
if(c != str2.charAt(i++))
counter++;
}
if(counter > 1)
// mismatch
答案 1 :(得分:1)
一次比较字符串一个字符。保持计数器计算不匹配。当计数器超出限制时,返回false。如果到达字符串的结尾,则返回true
答案 2 :(得分:1)
尝试将字符串存储在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
答案 3 :(得分:1)
如果你想要最快的方式,你应该从现有的算法编写它,如“近似Boyer-Moore字符串匹配”或后缀树方法...
请看这里:https://codereview.stackexchange.com/questions/13383/approximate-string-matching-interview-question
他们做了数学计算,你做了代码......
其他有趣的SO帖子是:
Getting the closest string match
Can java.util.regex.Pattern do partial matches?