299.[leetcode]Bulls and Cows
来源:互联网 发布:mac page up 编辑:程序博客网 时间:2024/05/21 13:57
题意就不赘述
我的做法
class Solution {public: string getHint(string secret, string guess) { vector<char> _guess; multiset<char> _secret; multiset<char>::iterator it; ostringstream b,c; int length = secret.size(); int bulls = 0; int cows = 0; // count bulls for(int i=0; i<length;i++){ if(secret[i]!=guess[i]) { _secret.insert(secret[i]); _guess.push_back(guess[i]); } else { bulls++; } } // count cows for(int i=0; i<_guess.size();i++){ it = _secret.find(_guess[i]); if(it != _secret.end()) { cows++; _secret.erase(it); } } // 输出部分 sstream string result,bulls_num,cows_num; b << bulls; bulls_num = b.str(); c << cows; cows_num = c.str(); result = bulls_num + "A" + cows_num + "B"; return result; }};
大神做法
string getHint(string secret, string guess) { vector<int>tb_guess(10),tb_secret(10); int A=0,B=0; for (int i=0;i<secret.size();++i){ if (secret[i]==guess[i]) A++; else { tb_guess[guess[i]-'0']++; tb_secret[secret[i]-'0']++; } } for (int i=0;i<10;++i){ B=B+ min(tb_guess[i],tb_secret[i]); } return to_string(A)+'A'+to_string(B)+'B'; }
关键在这个,题中有一个重要的信息是:只可能是数字, 也就是只可能是 0-9
这时只要用两个10大小的 vector 记录下,不同的数字出现的次数,去两者最小(也就是重叠的部分),就好了
ps:使用std 的 to_string 也比 sstream好的多
0 0
- [leetcode] 299. Bulls and Cows
- LeetCode || 299. Bulls and Cows
- LeetCode 299. Bulls and Cows
- Leetcode 299. Bulls and Cows
- LeetCode.299.Bulls and Cows
- LeetCode--299. Bulls and Cows
- 【LeetCode】299. Bulls and Cows
- [leetcode] 299. Bulls and Cows
- LeetCode *** 299. Bulls and Cows
- leetcode 299. Bulls and Cows
- LeetCode 299. Bulls and Cows
- LeetCode-299.Bulls and Cows
- Leetcode 299. Bulls and Cows
- 299.[leetcode]Bulls and Cows
- leetcode 299. Bulls and Cows
- LeetCode 299. Bulls and Cows
- 【leetcode】299. Bulls and Cows
- LeetCode 299. Bulls and Cows
- JS寻找宝藏游戏
- 张小军:象征资本的再生产——从阳村宗族论民国基层社会
- java图形和文本学习
- 把一个内容为16进制 的文本文件,转换成10进制的文本文件
- 使用Brackets编写Sass代码
- 299.[leetcode]Bulls and Cows
- scanf,fscanf,sscanf的区别----总结
- Java中 Comparator接口 与Comparable 的区别
- leetcode-Reorder List-143
- fwrite与fprintf区别、printf与fprintf区别
- C#项目中WebBrowser控件的应用
- fopen与fread函数分析
- ARC 概要
- 深入探索c++虚函数继承模型