【问题标题】:Basic java code to compare char of two strings比较两个字符串的字符的基本java代码
【发布时间】:2015-05-06 12:30:33
【问题描述】:

我想编写接受两个字符串并返回两个字符串的字符不匹配时的次数之和的代码。

public int solution(String s1, String s2) {
    int sum = 0;
    for (int i=0; i<s1.length(); i++){
        if (s1.charAt(i) != s2.charAt(i))
            sum++;
    }
    return sum;
}

当两个字符串的长度相同时运行此代码。我想要我需要添加到代码中的内容,以便如果 string 1 的长度 > string 2 的长度,代码仍然运行并且还包括 # char chat 无法与 string 2 进行比较,因为string 2 更短。 (反之亦然)

例如:

s1: aaaaab
s2: ac

==> sum =5

s1: ab
s2: abbbb

==> sum = 3

【问题讨论】:

  • Math.min(s1.length(), s2.length())?

标签: java string methods char compare


【解决方案1】:

求两个字符串的最小和最大长度。

int min = 0, max = 0;
if(s1.length() > s2.length()) {
   max = s1.length();
   min = s2.length();
} else {
   min = s1.length();
   max = s2.length();
}

只遍历最小长度

for (int i=0; i<min; i++){
   if (s1.charAt(i) != s2.charAt(i)) {
      sum++;
   }
}

然后在返回值中加上max和min的差

 return sum + (max - min);

【讨论】:

    【解决方案2】:

    您寻找的数字是两个步骤的组合:

    1. 您在代码中执行的从 0 到 Math.min(s1.length(),s2.length()) 的字符串之间的差异数。
    2. 两个字符串的长度不同。 Math.abs(s1.length()-s2.length())

    将 (1) 和 (2) 中的数字相加,这就是您要寻找的数字;)

    【讨论】:

    • 因为我是一个完整的 java 初学者,我真的不明白如何将它添加到代码中。如果您能详细说明,那将非常有帮助。
    猜你喜欢
    • 2012-08-02
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多