poj1002 487-3279 (简单字符串处理)
2013-12-01 14:45
309 查看
大致题意是首先一个整形变量n表示输入字符串的数量,然后紧跟n行字符串表示的号码,其中字符ABCD……分别映射相应的数字,特别值得注意的是,只有这个号码出现的次数大于1才会在结果中输出,否则输出 No duplicates.
解决这个题用字符传的相应操作的话,可能会超时,浏览好多大牛写的文章,学了一种我感觉比较巧妙的方法处理这个问题。分别将字符串转化成一个7位的整型数字,在判重和计算相同字符串的出现次数时,也想当简单,输出是要注意输出格式,这个很重要!!好了不多说了,直接上代码
解决这个题用字符传的相应操作的话,可能会超时,浏览好多大牛写的文章,学了一种我感觉比较巧妙的方法处理这个问题。分别将字符串转化成一个7位的整型数字,在判重和计算相同字符串的出现次数时,也想当简单,输出是要注意输出格式,这个很重要!!好了不多说了,直接上代码
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; char str[50]; int times[10000000]; bool vis[10000000]; int out[100000]; int main() { int i, j, n, pos = 0; int flag = 0; cin >> n; memset(vis, false, sizeof(vis)); memset(times, 0, sizeof(times)); for(i = 0; i < n; i++) { cin >> str; int sum = 0; for(j = 0; str[j] != '\0'; j++) { if(str[j] == '-' || str[j] == 'Q' || str[j] == 'Z') continue; else if(str[j] >= '0' && str[j] <= '9') sum = sum * 10 + str[j] - '0'; else { if(str[j] == 'A' || str[j] == 'B' || str[j] == 'C') str[j] = '2'; else if(str[j] == 'D' || str[j] == 'E' || str[j] == 'F') str[j] = '3'; else if(str[j] == 'G' || str[j] == 'H' || str[j] == 'I') str[j] = '4'; else if(str[j] == 'J' || str[j] == 'K' || str[j] == 'L') str[j] = '5'; else if(str[j] == 'M' || str[j] == 'N' || str[j] == 'O') str[j] = '6'; else if(str[j] == 'P' || str[j] == 'R' || str[j] == 'S') str[j] = '7'; else if(str[j] == 'T' || str[j] == 'U' || str[j] == 'V') str[j] = '8'; else if(str[j] == 'W' || str[j] == 'X' || str[j] == 'Y') str[j] = '9'; sum = sum * 10 + str[j] - '0'; } } times[sum]++; if(!vis[sum] && times[sum] >= 2) { flag = 1; vis[sum] = true; out[pos] = sum; pos++; } } if(!flag) cout << "No duplicates." << endl; else { sort(out, out + pos); for(i = 0; i < pos; i++) { printf("%03d-%04d %d\n", out[i] / 10000, out[i] % 10000, times[out[i]]); } } return 0; }
相关文章推荐
- poj1002-487-3279(字符串处理)
- 字符串处理487-3279
- 成长轨迹50 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2974:487-3279】
- 1002 487-3279(字符串处理)
- ACM-487-3279(字符串处理)
- POJ 1002 487-3279 字符串处理
- OpenJudge百炼-2974-487-3279-C语言-字符串处理
- poj 1200 Hash处理字符串(简单的rabin-karp)
- HDU 5585 Numbers(字符串的处理 简单题)——BestCoder Round #64(div.2)
- 简单字符串处理
- iOS之字符串、数组、字典的简单处理
- 字符串的简单处理
- HDU 2399 GPA(简单字符串的处理)
- hdu 2265 Encoding The Diary (基础的字符串处理,巨简单)
- wertyu(简单的字符串处理问题)
- 简单的字符串处理
- python字符串处理简单优化
- oracle字符串连接和时间格式处理(附加Calendar简单使用)
- 杭电 1256 画8 (简单的字符串处理)
- poj 3077 Rounders 【简单字符串处理】