华为机试-输入字符串 输出重复的字符个数 例如 输入 aaabbcc 输出 a:3,b:2,c:2


/****
 * 输入字符串 输出重复的字符个数
 * 例如 输入 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,

发布了47 篇原创文章 · 获赞 44 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/yang_quan_yang/article/details/96968509