PAT乙级—1021. 个位数统计 (15)-native

给定一个k位整数N = dk-1*10k-1 + … + d1*101 + d0 (0<=di<=9, i=0,…,k-1, dk-1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定N = 100311,则有2个0,3个1,和1个3。

输入格式:

每个输入包含1个测试用例,即一个不超过1000位的正整数N。

输出格式:

对N中每一种不同的个位数字,以D:M的格式在一行中输出该位数字D及其在N中出现的次数M。要求按D的升序输出。

输入样例:

100311

输出样例:

0:2
1:3
3:1

思路:将原来的数组先排序,然后再统计字符个数,再输出。

#include<iostream>
#include<algorithm> 
#include<cstring>
using namespace std;
int main()
{
    string N;
    cin>>N;
    int length=N.length();
    char N1[length];
    int flag=0;
    for(int i=0;i<length;i++)           //将字符串转换为字符数组以便排序 
    {
        N1[i]=N[i];
    }
    sort(N1,N1+length,less<char>());    //将原来的数组排序以便于输出 
    int count=1;                        //初始化为1,比较时若下一个不一样则直接输出 
    for(int i=0;i<N.length();i++)
    {
        if(N1[i]==N1[i+1])
        {
          count++;;
        }
        else
        {
            cout<<N1[i]<<":"<<count<<endl;//什么时候与下一个字符不一样了,什么时候输出 
            count=1;                    //找完一个字符之后将count初始化为1,以便统计下一个字符 
        }
    }   
    return 0;
} 

题目链接:

https://www.patest.cn/contests/pat-b-practise/1021

你可能感兴趣的:(pat,乙级,1021,个位数统计)