本关任务:编写一个算法统计在输入字符串中各个不同字符出现的频度,并将结果输出(字符串中的合法字符为a-z、A-Z之间的26个字母和0-9之间的10个数字)。
时间: 2024-10-14 15:06:03 浏览: 94
算法描述:
1. 初始化一个长度为26+10=36的数组count,用于存储每个字符(包括字母和数字)出现的次数。数组下标0-25代表小写字母a到z,下标26-35代表大写字母A到Z,最后两个下标27和28分别代表数字0和1。
2. 遍历输入字符串。对于每一个字符:
- 如果字符是字母(ASCII码范围65-90或97-122),将其对应的数组下标(减去'A'或'a'的ASCII码值)更新count。
- 如果字符是数字(ASCII码范围48-57),则在26之后的数组下标上加36并更新count。
3. 在遍历结束后,我们得到的count数组就能反映出每个字符出现的次数了。例如count[0]就是'a'的频率,count[26]则是'A'的频率。
4. 将结果输出,可以按照字母顺序打印出每个字符及其出现次数,或者直接创建一个map或字典数据结构,以便于查询。
Python示例代码:
```python
def count_chars(s):
count = [0] * 36
for char in s:
if 'a' <= char <= 'z':
count[ord(char) - ord('a')] += 1
elif 'A' <= char <= 'Z':
count[ord(char) - ord('A') + 26] += 1
elif '0' <= char <= '9':
count[ord(char) - ord('0') + 36] += 1
return count
input_str = "Your input string"
char_freq = count_chars(input_str)
# 输出字符频率
for i in range(36):
if char_freq[i]:
print(f"Character '{chr(i+ord('a'))}' appears {char_freq[i]} times.")
阅读全文