6. (程序题) 【又见字符统计】 【题目描述】 输入英文字符,请按照字母表顺序统计字符串中所有出现的字母的个数(计数时不区分大小写),若输入的内容有误(即不是所有的字符都是英文字符),则输出Error。 【输入描述】 一串只包含英文字母的字符。代码
时间: 2024-05-01 20:18:01 浏览: 72
可以这样实现:
``` python
def count_chars(s):
# 将字符串转化为小写
s = s.lower()
# 初始化字母出现次数为0
counts = [0] * 26
for ch in s:
# 判断字符是否为英文字母
if 'a' <= ch <= 'z':
# 将字符转化为对应的下标
index = ord(ch) - ord('a')
# 对应字母出现次数加1
counts[index] += 1
else:
return "Error"
# 将出现次数大于0的字母及其出现次数输出
res = ""
for i in range(26):
if counts[i] > 0:
res += chr(i + ord('a')) + ":" + str(counts[i]) + ","
# 去除最后一个逗号并返回结果
return res[:-1]
input_str = input()
print(count_chars(input_str))
```
输入示例:abcdefABCDEFzzz
输出示例:a:1,b:1,c:1,d:1,e:1,f:1,z:3
相关问题
用c语言写代码:统计英文字符串的字符分布,即统计该宇符串中每个字符的数量,只统计英文字母,不区分大小写,忽路其他非字母字符。输出按照“字母:字符”显示每行一个结果,字母按照字母表升序排列
好的,下面是代码:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
char str[MAX_LEN];
int count[26] = {0}; // 用数组记录每个字母出现次数,初始为0
int len, i;
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin);
len = strlen(str);
for (i = 0; i < len; i++)
{
if (isalpha(str[i])) // 如果是字母
{
count[toupper(str[i]) - 'A']++; // 转换成大写字母并记录
}
}
for (i = 0; i < 26; i++)
{
if (count[i] > 0)
{
printf("%c:%d\n", i + 'A', count[i]); // 显示字母及其出现次数
}
}
return 0;
}
```
代码解释:
1. 定义字符串数组 `str` 存储输入的字符串,最大长度为 `MAX_LEN`。
2. 定义整型数组 `count` 存储各个字母出现的次数,数组长度为 26,初始值为 0。
3. 使用 `fgets()` 函数从标准输入中读取字符串。
4. 使用 `strlen()` 函数获取字符串长度,遍历字符串中的每个字符。
5. 如果该字符是字母,使用 `toupper()` 函数将其转换成大写字母,并在 `count` 数组相应的位置上加 1。
6. 遍历 `count` 数组,如果某个字母出现次数大于 0,输出该字母和出现次数。
注意事项:
1. 因为题目要求忽略大小写,所以需要使用 `toupper()` 函数将字符转换成大写字母。
2. 输出时字母应按照字母表升序排列,可以直接在遍历 `count` 数组时按照字母表的顺序输出。
给定一个只包含大写字母的字符串S,请你输出其中出现次数最多的字母。如果有多个字母均出现了最多次,按字母表顺序依次输出所有这些字母。输入一个只包含大写字母的字符串S。输出若干个大写字母,代表答案,样例输...
好的,这是一道简单的字符串统计题目。我们可以使用一个哈希表来记录每个字母出现的次数,然后找到出现次数最多的字母并输出。
以下是Python的代码实现:
```python
S = input() # 输入字符串S
count = {} # 定义一个空的哈希表
# 遍历字符串S中的每个字符
for c in S:
if c in count:
count[c] += 1 # 如果该字符已经在哈希表中,次数加1
else:
count[c] = 1 # 否则将该字符添加到哈希表中,次数初始化为1
max_count = max(count.values()) # 找到出现次数最多的字母的出现次数
# 输出所有出现次数为max_count的字母,按字母表顺序
for c in sorted(count):
if count[c] == max_count:
print(c, end='')
```
例如,对于输入字符串`ABBCCCDDDDEEEEE`,输出结果为`E`。
如果输入字符串`ABCABCABC`,输出结果为`ABC`。
阅读全文