secret和guess按位读入,如果相等bull就加1,不相等就在各自统计不同数字出现次数的数组里加1(s_map[i]指secret里数字i出现的次数)。最后s_map和g_map存的是各自string中位置不等的各数值出现的次数,cow等于两个数组中相同位置的最小数。
1 class Solution { 2 public: 3 string getHint(string secret, string guess) { 4 int s_map[10] = { 0}, g_map[10] = { 0}; 5 int bull = 0, cow = 0; 6 7 for(int i = 0; i < secret.length(); ++i){ 8 if(secret[i] == guess[i]) ++bull; 9 else{10 ++s_map[secret[i] - '0'];11 ++g_map[guess[i] - '0'];12 }13 }14 15 for(int i = 0; i < 10; ++i){16 cow += min(s_map[i], g_map[i]);17 }18 19 20 string res = "";21 res = to_string(bull) + "A" + to_string(cow) + "B";22 return res;23 }24 };