1

查看一个字符串是否与另一个相同长度的字符串匹配且 X 允许不匹配的最快/最清晰的方法是什么?是否有一个库可以做到这一点,它不在 Apache stringUtils 中(只有一个也使用插入/删除)。

所以可以说我有 2 个长度的字符串,我想知道它们是否与允许的 1 个不匹配匹配。不允许插入和删除。

所以:

ABCD <-> ABCD = 匹配

ABCC <-> ABCD = 匹配 1 个不匹配

ACCC <-> ABCD = 不匹配,2 个不匹配太多了。

4

4 回答 4

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
于 2012-12-19T10:34:48.410 回答
1
String str1, str2;

假设字符串的长度相等:

int i = 0;

for(char c : str1.toCharArray())
{
   if(c != str2.charAt(i++))
      counter++;
}

if(counter > 1)
  // mismatch
于 2012-12-19T10:30:29.187 回答
1

一次比较字符串一个字符。保留一个计数器来计算不匹配。当计数器超过限制时,返回false。如果到达字符串末尾,返回true

于 2012-12-19T10:30:59.363 回答
1

如果您想要最快的方式,您应该从现有算法(如“近似 Boyer-Moore 字符串匹配”或后缀树方法)对其进行编码......

看这里:https ://codereview.stackexchange.com/questions/13383/approximate-string-matching-interview-question

他们做数学,你做代码......

其他有趣的 SO 帖子是:

获取最接近的字符串匹配

java.util.regex.Pattern 可以进行部分匹配吗?

生成给定字符串的所有排列

相似度得分 - Levenshtein

于 2012-12-19T10:39:58.720 回答