3547 - 讨厌的字符串
字符串处理一直是小学生的一个弱项,不多说了,这次又要请你们帮忙了…….
<span style="font-size:16px;font-family:宋体;">对于每个字符串,要求小学生想知道,每个字符出现的个数,并且输出它们,要求按照在原字符串的出现的先后顺序输出,每个一行</span><span></span>
Input
测试包含多组测试数据
<span style="font-size:16px;font-family:宋体;">每个字符串一行,每个字符串最多包含</span><span style="font-size:16px;">100</span><span style="font-size:16px;font-family:宋体;">个字符,且不为空,每个字符均由小写英文字母组成</span><span></span>
Output
首先输出一个字符,再输出分隔符":",再输出字符出现的次数
具体参见样例输出
Examples
Input
aabbcc cbaabc
Output
a:2 b:2 c:2 c:2 b:2 a:2
Hint
作者:李雪峰
Solution C
#include <stdio.h> #include <string.h> int main() { int a[100]={0},i,j,len,num=0,check=0; char c[100],b[100]; while(gets(c)) { num=0; len=strlen(c); for(i=0;i<len;i++) { if(i==0) { b[0]=c[0]; a[0]++; num++; } else { for(j=0;j<num;j++) { if(c[i]==b[j]) { a[j]++; check++; break; } } if(check==0) { b[num++]=c[i]; a[num-1]++; } check=0; } } for(i=0;i<num;i++) printf("%c:%d\n",b[i],a[i]); for(i=0;i<num;i++) a[i]=b[i]=0; } return 0; }
Solution C++
#include <bits/stdc++.h> using namespace std; struct node { char num; int data; int cc; node() { data=0; cc=0; } }; int cmp(node aa,node bb) { return aa.cc<bb.cc; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); char a[200]; while(scanf("%s",a)!=EOF){ node b[27]; int kk=1; int len=strlen(a); for (int i=0;i<len;i++){ int ss=a[i]-'a'; if (b[ss].cc==0){ b[ss].num=a[i]; b[ss].cc=kk; kk++; } b[ss].data++; } sort(b,b+27,cmp); for (int i=0;i<27;i++){ if (b[i].cc>0) { printf("%c:%d\n",b[i].num,b[i].data); } } } return 0; }
Hint
作者:李雪峰