统计出一个字符串每种字母出现的次数,并且打印出各字符对应的次数。注意:要求时间复杂度为O(n)。
举例如下:
输入字符串:“Hello!”
输出打印如下:
H:1
e:1
l:2
o:1
!:1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char c[100];
int a[26] = { 0 }, A[26] = { 0 }, flag = 0, i = 0;
gets_s(c); //输入字符串
while (c[i] != '\0') //遍历所有字符串,找到字母出现的次数
{ //while((c = getchar()) != '\n'){
if (c[i] >= 'a' && c[i] <= 'z') //找出小写字母
{
a[c[i] - 'a']++; flag = 1;
} //a[0]对应保存小写字母出现的次数
if (c[i] >= 'A' && c[i] <= 'Z') //找到大写字母
{
A[c[i] - 'A']++; flag = 1;
} //A[0]对应保存大写字母出现的次数
i++;
}
for (int i = 0; i < 26; i++)
if (a[i] != 0)
printf("%c:%d\n", 'a' + i, a[i]);
for (int i = 0; i < 26; i++)
if (A[i] != 0)
printf("%c:%d\n", 'A' + i, A[i]);
if (!flag) printf("No letter!");
system("pause");
return EXIT_SUCCESS;
}
打印结果: