码迷,mamicode.com
首页 > 编程语言 > 详细

2016 阿里校招研发算法题 9.9

时间:2016-09-10 13:09:36      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

题目大意:

输入一个字符串流,里面有数字和非数字,非数字将数字隔开了,要找出,出现次数最多的数字。

 

思路:

先将所有非数字用统一字符替换,然后找出数字,需要判断下一个字符是不是数字,然后将数字存到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

标签:

原文地址:http://www.cnblogs.com/SeekHit/p/5859130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!