• 注册
当前位置:1313e > 默认分类 >正文

【PTA】7-1 AC Me (15 分)

Ignatius现在正在做作业。老师给了他一些文章,并要求他说出每个字母的出现次数。 真的很简单,不是吗?

输入格式:

多组输入。每一篇文章只有一行,所有的字母都是小写字母。你只需要计算每个字母的数量,所以不要注意其他字符。文章的长度最多是100000。处理到文件的末尾。

输出格式:

对于每一篇文章,你必须说出每封信的出现次数。输出格式类似“x:n”。

输入样例:

hello, this is my first acm contest!
work hard for hdu acm.

输出样例:

a:1

b:0

c:2

d:0

e:2

f:1

g:0

h:2

i:3

j:0

k:0

l:2

m:2

n:1

o:2

p:0

q:0

r:1

s:4

t:4

u:0

v:0

w:0

x:0

y:1

z:0

a:2

b:0

c:1

d:2

e:0

f:1

g:0

h:2

i:0

j:0

k:1

l:0

m:1

n:0

o:2

p:0

q:0

r:3

s:0

t:0

u:1

v:0

w:1

x:0

y:0

z:0

思路:

C++ AC

  • 由于输入的是带空格的几行字符串 所以应该用getline
  • 没说几个字符串,所以需要while 输入 最后ctrl z 手动退出输入
  • 设定一个计数数组 0-26分别对应26个字母,对应关系需要用ascll码来计算。
  • 题目里说了字符串是由小写字符构成,故我们需要的ascll码范围是97到122
#include 
#include 
using namespace std;
int main()
{string str="";//26个字母,所以开30的数组就可以int cnt[30];//输入while(getline(cin,str)){//每次进行初始化for(int i=0; i<30; i++){cnt[i]=0;}for(int i=0; i<str.size(); i++){int tmp=str[i]-0;//其实这里就是将字符转化为ascll码//如果是字母  (这里字母a是97  z是122 )if(tmp>=97&&tmp<=122){//减97之后,a对应的数组下标是0.....z对应的下标是25cnt[str[i]-97]++;}}//对每个进行输出for(int i=0; i<26; i++){cout<<char(i+97)<<":"<<cnt[i]<<endl;}}return 0;
}

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录