Solution 1
string int2string(int num)
{
stringstream ss;
ss << num;
return ss.str();
}
string getHint(string secret, string guess)
{
int bullCnt = 0, cowCnt = 0, cnt = 0;
map<char, int> rec;
for(int i = 0; i < secret.length(); i++)
{
if(secret[i] == guess[i])
{
bullCnt++;
continue;
}
if(rec.find(secret[i]) == rec.end())
rec[secret[i]] = 1;
else
rec[secret[i]] ++;
}
for(int i = 0; i < guess.length(); i++)
{
if(rec.find(guess[i]) != rec.end())
{
cowCnt++;
rec[guess[i]] --;
if(rec[guess[i]] == 0)
rec.erase(guess[i]);
}
}
return int2string(bullCnt) + "A" + int2string(cowCnt) + "B";
}
Solution 2
- int 型转换为 string型使用函数to_string()。
- 对于有限字符的可以直接用数组来记录。
string Solution::getHint(string secret, string guess)
{
int bullCnt = 0, cowCnt = 0, cnt = 0;
vector<int> secret_cnt(10, 0), guess_cnt(10, 0);
for(int i = 0; i < secret.length(); i++)
{
if(secret[i] == guess[i])
{
bullCnt ++;
continue;
}
int g = guess[i] - '0', s = secret[i] - '0';
if(secret_cnt[g])
{
secret_cnt[g] --;
cowCnt ++;
}
else
guess_cnt[g]++;
if(guess_cnt[s])
{
guess_cnt[s]--;
cowCnt ++;
}
else
secret_cnt[s]++;
}
return to_string(bullCnt) + "A" + to_string(cowCnt) + "B";
}