2025年方便记忆的电话号码

方便记忆的电话号码方便记忆的电话号码 总时间限制 2000ms 内存限制 65536kB 描述 英文字母 除 Q 和 Z 外 和电话号码存在着对应关系 如下所示 A B C gt 2 D E F gt 3 G H I gt 4 J K L gt 5 M N O gt

大家好,我是讯享网,很高兴认识大家。

方便记忆的电话号码

总时间限制: 

2000ms

内存限制: 

65536kB

描述

英文字母(除Q和Z外)和电话号码存在着对应关系,如下所示:

A,B,C -> 2

D,E,F -> 3

G,H,I -> 4

J,K,L -> 5

M,N,O -> 6

P,R,S -> 7

T,U,V -> 8

W,X,Y -> 9


讯享网

标准的电话号码格式是xxx-xxxx,其中x表示0-9中的一个数字。有时为了方便记忆电话号码,我们会将电话号码的数字转变为英文字母,如把263-7422记成America。有时,我们还加上“-”作为分隔符,如把449-6753记成Hi-World。当然,我们未必要将所有的数字都转变为字母,比如474-6635可以记成iPhone-5。

总之,一个方便记忆的电话号码由数字和除Q、Z外的英文字母组成,并且可以在任意位置插入任意多的“-”符号。

现在 ,我们有一个列表,记录着许多方便记忆的电话号码。不同的方便记忆的电话号码可能对应相同的标准号码,你的任务就是找出它们。

输入

输出

输出包括若干行,每行包括一个标准电话号码(xxx-xxxx)以及它重复出现的次数k(k >= 2),中间用空格分隔。输出的标准电话号码需按照升序排序。

如果没有重复出现的标准电话号码,则输出一行“No duplicates.”。

样例输入

12  ITS-EASY 888-4567 3-10-10-10 888-GLOP TUT-GLOP 967-11-11 310-GINO F 888-1200 -4-8-7-3-2-7-9- 487-3279 

讯享网

样例输出

讯享网310-1010 2 487-3279 4 888-4567 3 

思路:

  就是基础的字符串处理,然后排序找出重复出现的字符串。另外要考虑的就是数字中有可能出现0,因此需要格式化输出,不足补零。

  然后可以写一个函数,求的是输入的字符串里面的每一个字符转化过是什么,如果是数字,我们就可以返回其这个字符串代表的数字“直接-'0’就行了”,如果是一个大写字母,就进行判断,然后返回其对应的数字。

#include<bits/stdc++.h> using namespace std; bool cmp(int a,int b){ return a<b; } int pd(char c){ if(c>='0'&&c<='9')return c-'0'; if(c=='A'||c=='B'||c=='C')return 2; if(c=='D'||c=='E'||c=='F')return 3; if(c=='G'||c=='H'||c=='I')return 4; if(c=='J'||c=='K'||c=='L')return 5; if(c=='M'||c=='N'||c=='O')return 6; if(c=='P'||c=='R'||c=='S')return 7; if(c=='T'||c=='U'||c=='V')return 8; if(c=='W'||c=='X'||c=='Y')return 9; } int main(){ int n,num,len=0; char s[201]; scanf("%d",&n); int b[n]; for(int i=0;i<n;i++){ scanf("%s",s); num=0; int t=strlen(s); for(int j=0;j<t;j++){ if(s[j]=='-')continue; else num=pd(s[j])+num*10; } b[len++]=num; } sort(b,b+len,cmp); bool flag=true; for(int j=0;j<len;j++){ int c=1; while(b[j+1]==b[j]&&j+1<n){ j++; c++; flag=false; } if(c>=2) printf("%03d-%04d %d\n",b[j]/10000,b[j]%10000,c); } if(flag) printf("No duplicates."); return 0; }

  这道题总的来说还是非常简单的,直接用字符串模拟和STL库中提供的sort函数是不会超时的,就是因为这是冒泡排序题目中唯一一个要字符串排序,所以我才拿出来讲了一下。 

题目链接:

OpenJudge - 6:方便记忆的电话号码http://dsalgo.openjudge.cn/sort/6/

小讯
上一篇 2025-01-14 07:47
下一篇 2025-03-23 14:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/15177.html