/****
* 输入字符串 输出重复的字符个数
* 例如 输入 aaabbcc
* 输出 a:3,b:2,c:2
****/
#include<iostream>
#include<string.h>
#include<stdio.h>
#include <iomanip>
using namespace std;
void fc(const char *inpt,long inplen)
{
int cont[26] ={0};
for(int i= 0;i<inplen;i++)
{
int ct = inpt[i] - 'a';
cont[inpt[i] -'a']++; //重要理解这句话 表示每一个下标的数
// 例如 a 是数组的第一个下标 cont[0] 如果是a 就++ 1 计数加1
//printf("inpt[i] -'a' = %c && %d ;; count[intpt[i] -'a'] = %c && %d \n",inpt[i] -'a', inpt[i] -'a',cont[inpt[i] -'a'],cont[inpt[i] -'a']++);
}
for(int i = 0;i<26;i++)
{
if(cont[i] == 0)
{
}
else{
//cout<<i+'a'<<":"<<cont[i]<<",";
printf("%c:%d,",i+'a',cont[i]);
}
}
cout<<endl;
}
int main()
{
char s[256];
while(cin >> s)
{
fc((const char*) s,strlen(s));
}
return 0;
}
运行如下:
aabbccddaaeeffss
inpt[i] -'a' = && 0 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 0 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 1 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 1 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 2 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 2 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 3 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 3 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 0 ;; count[intpt[i] -'a'] = && 2
inpt[i] -'a' = && 0 ;; count[intpt[i] -'a'] = && 3
inpt[i] -'a' = && 4 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 4 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 5 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 5 ;; count[intpt[i] -'a'] = && 1
inpt[i] -'a' = && 18 ;; count[intpt[i] -'a'] = && 0
inpt[i] -'a' = && 18 ;; count[intpt[i] -'a'] = && 1
a:4,b:2,c:2,d:2,e:2,f:2,s:2,