
题目

先进行比对找出相同并且位置一致的值,然后针对剩下的值通过一个’0’-'9’的数组进行比对,针对原始字符串没有一个值则对应的数字字符的个数+1,然后guess的字符则对对应的数字字符的个数-1. code 代码如下:
class Solution {
public String getHint(String v1, String v2) {
int sameValueAndPos = 0;
StringBuilder sub1 = new StringBuilder();
StringBuilder sub2 = new StringBuilder();
for (int i = 0; i < v1.length(); i++) {
if (v1.charAt(i) == v2.charAt(i)) {
sameValueAndPos++;
} else {
sub1.append(v1.charAt(i));
sub2.append(v2.charAt(i));
}
}
int sameValueNotPos = 0;
int[] posNum = new int[10];
String sub1Str = sub1.toString();
for (int i = 0; i < sub1Str.length(); i++) {
posNum[sub1Str.charAt(i) - '0']++;
}
String sub2Str = sub2.toString();
for (int i = 0; i < sub2Str.length(); i++) {
int num = posNum[sub2Str.charAt(i) - '0'];
if (num > 0) {
sameValueNotPos++;
posNum[sub2Str.charAt(i) - '0']--;
}
}
return sameValueAndPos + "A" + sameValueNotPos + "B";
}
}

该博客主要讨论了一种字符串比对的算法,首先计算相同值且位置一致的字符数量,然后对剩余字符通过'0'-'9'的数组进行计数。当原始字符串中没有出现某个字符时,对应数字字符的计数加一,而在guess字符串中出现时则减一。最后返回相同位置字符数和不同位置但相同字符数的组合结果。
993

被折叠的 条评论
为什么被折叠?



