3547 - 讨厌的字符串

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

 字符串处理一直是小学生的一个弱项,不多说了,这次又要请你们帮忙了…….

<span style="font-size:16px;font-family:宋体;">对于每个字符串,要求小学生想知道,每个字符出现的个数,并且输出它们,要求按照在原字符串的出现的先后顺序输出,每个一行</span><span></span> 

题目输入

 测试包含多组测试数据

<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> 

题目输出

首先输出一个字符,再输出分隔符":",再输出字符出现的次数 

具体参见样例输出

输入/输出样例

输入格式

aabbcc
cbaabc

输出格式

a:2
b:2
c:2
c:2
b:2
a:2

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;
}

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;
}