比较2个字符串并返回匹配字母java的数量

时间:2014-08-14 01:30:43

标签: java

如何比较2个字符串以返回Java中匹配的数量的int?

我有一个"彩票号码"这是一个UUID,看起来像561637ba-06f6-4457-9787-ba65768c1b73我会将它与另一个字符串比较,如72c92628-5789-4d5c-9287-742dbc57cca9,其中不包括 - 将是5个匹配的字符。会有一种更简单的方法来简单地循环每一个字符吗?

2 个答案:

答案 0 :(得分:3)

假设两个字符串具有相同的长度,这就像它得到的那样好:

public static int numberMatchingChars(String s1, String s2) {
    int count = 0;
    for (int i = 0; i < s1.length(); i++)
        if (s1.charAt(i) == s2.charAt(i) && s1.charAt(i) != '-')
            count++;
    return count;
}

显然,你必须遍历两个字符串上的每个字符。

答案 1 :(得分:0)

不确定这是否会改善问题,并假设两个字符串具有相同的长度和格式,但无论如何,从技术上讲,您不需要访问每个字符。

String arr1[] = s1.split ("-");
String arr2[] = s2.split ("-");

int totCount = 0;

for (int x = 0; x < arr1.length; x++) {

   if (arr1[x].equals (arr2[x]) == false) {

       // compare char by char for arr1[x] to arr2[x]
       totCount += numberMatchingChars(arr1[x], arr2[x]);

   }
}

public static int numberMatchingChars(String s1, String s2) {
    int count = 0;
    for (int i = 0; i < s1.length(); i++)
        if (s1.charAt(i) == s2.charAt(i))
            count++;
    return count;
}