299.猜数游戏
解题思路
- 对出现的数字在两个数组中进行统计
- 先计算公牛的个数,如果有那么统计的数字的数量对应减一,因为统计是用来算奶牛的数量的
- 遍历统计数组,奶牛的数量加上两个数组中最小的值,因为是匹配,所以不可能多出来的也可以匹配,所以是加上其中的最小值
代码实现
int min(int a, int b) {
return a <= b? a: b;
}
char* getHint(char* secret, char* guess) {
char* ans = (char*)malloc(sizeof(char) * 1001);
int res1 = 0;
int res2 = 0;
int a[10] = {0};
int b[10] = {0};
for (int i = 0; secret[i]; i ++) {
a[secret[i] - '0'] ++;
b[guess[i] - '0'] ++;
if (secret[i] == guess[i]) {
res1 ++;
a[secret[i] - '0'] --;
b[guess[i] - '0'] --;
}
}
for (int i = 0; i < 10; i ++) {
res2 += min(a[i], b[i]);
}
int i = 0;
if (res1) {
int a[1001] = {0};
int size = 0;
while(res1) {
a[size ++] = res1 % 10;
res1 /= 10;
}
while(size) {
ans[i ++] = a[--size] + '0';
}
}
else {
ans[i ++] = '0';
}
ans[i ++] = 'A';
if (res2) {
int a[1001] = {0};
int size = 0;
while(res2) {
a[size ++] = res2 % 10;
res2 /= 10;
}
while(size) {
ans[i ++] = a[--size] + '0';
}
}
else {
ans[i ++] = '0';
}
ans[i ++] = 'B';
ans[i ++] = 0;
return ans;
}
标签:10,int,题解,2024,数组,统计 From: https://www.cnblogs.com/lwj1239/p/18064713