2016 阿里校招研发算法题 9.9

Posted SeeKHit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章

2016 百度校招研发算法题 9.12

算法题 145:递归快速排序复杂度等5选择题道题(顺丰2017校招研发笔试题)

[算法]2018年阿里巴巴数据研发工程师编程题

腾讯2016校招编程题PHP实现

2016阿里巴巴笔试题

阿里巴巴2022届应届生招聘 阿里云存储基础技术 研发&测试&算法