首页 > 代码库 > 2016 阿里校招研发算法题 9.9
2016 阿里校招研发算法题 9.9
题目大意:
输入一个字符串流,里面有数字和非数字,非数字将数字隔开了,要找出,出现次数最多的数字。
思路:
先将所有非数字用统一字符替换,然后找出数字,需要判断下一个字符是不是数字,然后将数字存到hashmap里面,出现存在过的数字,hashmap的value+1;最后输出value值最大的数字。
代码:
1 #include"iostream" 2 #include"map" 3 #include"vector" 4 #include"algorithm" 5 #define MAX 10000 6 using namespace std; 7 8 char c[MAX]; 9 bool tag;10 map<int, int> m,msort;11 12 int main()13 {14 while (cin >> c)15 {16 tag = false;17 for (int i = 0; i < strlen(c); i++)18 {19 if (c[i] < ‘0‘ || c[i]>‘9‘)20 c[i] = ‘*‘;21 cout << c[i];22 }23 cout << endl;24 for (int i = 0,j=0; i < strlen(c); i++)25 {26 int t=0;27 while (c[i] == ‘*‘)28 i++;29 while (c[i] != ‘*‘&&c[i]!=‘\0‘)30 {31 tag = true;32 t += c[i] - ‘0‘;33 34 if (c[i + 1] == ‘\0‘)35 break;36 37 if (c[i + 1] == ‘*‘)38 tag = false;39 40 if (tag)41 t *= 10;42 i++;43 } 44 if (m.count(t))45 {46 m[t]++;47 }else 48 m[t] = 1;49 50 j++;51 }52 53 map<int, int>::iterator res = m.begin();54 for (map<int, int>::iterator iter = m.begin(); iter!=m.end(); iter++)55 {56 if (iter->second > res->second)57 res = iter;58 59 }60 cout << res->first << endl;61 62 m.clear();63 }64 system("pause");65 66 }
2016 阿里校招研发算法题 9.9
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。