我想写一段代码,接受两个字符串,并返回两个字符串的字符不匹配的次数之和。
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聊天,则无法与string 2
进行比较,因为string 2
更短。(反之亦然)
例如:
s1: aaaaab
s2: ac
==> sum =5
或
s1: ab
s2: abbbb
==> sum = 3
查找两个字符串的最小和最大长度。
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++;
}
}
然后将返回值中的最大值和最小值之差相加
return sum + (max - min);
您要查找的数字是两个步骤的组合:
- 在代码中执行时,从0到
Math.min(s1.length(),s2.length())
的字符串之间的差异数 - 两个字符串长度的差异。
Math.abs(s1.length()-s2.length())
将(1)和(2)中的数字相加,即为你所求的数字;)