标签:存储 iostream span 指针 热门话题 ret cstring lower turn
1 #include<iostream> 2 #include <map> 3 #include <string> 4 #include <cstring> 5 using namespace std; 6 map<string, long long int> num;//某话题出现次数 7 int main() 8 { 9 long long int N; 10 cin >> N; 11 cin.get();//吸收回车 12 char ch; 13 char s[150];//临时储存字符串 14 int sp = 0;//sp的指针 15 long long int sum = 0;//还有sum条并列热门话题 16 long long int max = 0;//最热门话题出现次数 17 char hot[150];//存储最热门的话题 18 for (long long int i = 0; i < N; i++) 19 { 20 map<string, bool>flag;//标记字符串是否在本行出现过 21 while ((ch = tolower(cin.get())) != ‘\n‘) 22 { 23 if (ch == ‘#‘) 24 { 25 sp = 0; 26 while ((ch = tolower(cin.get())) != ‘#‘) 27 { 28 if ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘0‘ && ch <= ‘9‘)) 29 { 30 s[sp++] = ch; 31 } 32 else 33 { 34 if (sp != 0 && (s[sp - 1] >= ‘a‘ && s[sp - 1] <= ‘z‘) || (s[sp - 1] >= ‘0‘ && s[sp - 1] <= ‘9‘)) 35 { 36 s[sp++] = ‘ ‘; 37 } 38 } 39 } 40 if (sp != 0 && s[sp - 1] == ‘ ‘)s[sp - 1] = ‘\0‘; 41 else s[sp] = ‘\0‘; 42 if (!flag[s]) 43 { 44 num[s]++; 45 flag[s] = true; 46 if (num[s] > max) 47 { 48 max = num[s]; 49 sum = 0; 50 strcpy(hot, s); 51 } 52 else if (num[s] == max) 53 { 54 sum++; 55 if (strcmp(s, hot) < 0) 56 strcpy(hot, s); 57 } 58 } 59 } 60 } 61 } 62 hot[0] = toupper(hot[0]); 63 cout << hot << endl << max << endl; 64 if (sum > 0) 65 { 66 cout << "And " << sum << " more ..."; 67 } 68 return 0; 69 }
标签:存储 iostream span 指针 热门话题 ret cstring lower turn
原文地址:https://www.cnblogs.com/2020R/p/12818762.html