题目链接
分析
题目给出俩个字符串secret和guess。找出bull和cow的个数。
bull: 位置相同并且字符相同;
cow: 字符相同但是位置不同;
注意这个case的输出结果:
Input:
“1122”
“1222”
Expected: “3A0B”
代码
string num2str(int num){
if(num == 0)
return "0";
string str = "";
while(num!=0){
str += num%10+'0';
num /=10;
}
reverse(str.begin(), str.end());
return str;
}
class Solution {
public:
string getHint(string secret, string guess) {
int a=0, b=0, i;
map<char, int> mm;
for(i=0; i<secret.size(); i++){
if(mm.find(secret[i])==mm.end()){
mm.insert(make_pair(secret[i],1));
}else{
mm[secret[i]]++;
}
}
for(i=0; i<guess.size(); i++){
if(guess[i] == secret[i]){
a++;
mm[guess[i]]--;
}
}
for(i=0; i<guess.size(); i++){
if(guess[i]!=secret[i]
&& mm.find(guess[i])!=mm.end()
&& mm[guess[i]]!=0 ){
b++;
mm[guess[i]]--;
}
}
return num2str(a) + "A" + num2str(b) + "B";
}
};