写一个算法实现统计在输入字符串中各个不同字符出现的频度。(字符串中的合法字符A~Z这26个字母和0~9这10个数字)。
时间: 2024-05-13 09:16:52 浏览: 85
以下是一个 Python 算法实现:
```python
def count_chars_frequency(s):
# 初始化一个字典,用于存储各个字符出现的频率
frequency = {}
for c in s:
# 只统计合法字符 A~Z 和 0~9
if c.isalnum():
# 如果字符已经在字典中,增加其频率
if c in frequency:
frequency[c] += 1
# 如果字符不在字典中,将其添加到字典并初始化频率为 1
else:
frequency[c] = 1
return frequency
```
使用示例:
```python
s = "Hello, world! 123"
frequency = count_chars_frequency(s)
print(frequency)
```
输出结果:
```
{'H': 1, 'e': 1, 'l': 3, 'o': 2, 'w': 1, 'r': 1, 'd': 1, '1': 1, '2': 1, '3': 1}
```
相关问题
用C语言写一个算法实现统计在输入字符串中各个不同字符出现的频度。(字符串中的合法字符A~Z这26个字母和0~9这10个数字)
在C语言中,你可以使用哈希表(如数组或者结构体)来统计输入字符串中每个字符的出现次数。这里是一个简单的示例,它使用数组`freq`存储字符及其频率:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 62 // 总共考虑26个大小写字母和0-9的数字
// 结构体表示字符及其出现次数
typedef struct {
char ch;
int count;
} CharFreq;
// 初始化字符频率数组为0
void init_freq(CharFreq freq[]) {
for (int i = 0; i < MAX_CHAR; ++i) {
freq[i].count = 0;
}
}
// 更新字符计数
void update_char(CharFreq freq[], char ch) {
freq[ch - 'A' || ch - 'a' || ch - '0']++; // 根据ASCII值计算索引位置
}
// 统计并打印字符频率
void print_freq(CharFreq freq[]) {
for (int i = 0; i < MAX_CHAR; ++i) {
if (freq[i].ch != '\0') { // 非空字符
printf("Character '%c' appears %d times.\n", freq[i].ch, freq[i].count);
}
}
}
int main() {
CharFreq freq[MAX_CHAR];
char str[100];
// 输入字符串
printf("Enter a string (A-Z, a-z, and 0-9): ");
fgets(str, sizeof(str), stdin); // 注意处理换行符
str[strlen(str)-1] = '\0'; // 去掉末尾的换行符
// 初始化和更新频率
init_freq(freq);
for (char c : str) {
if ('A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9') {
update_char(freq, c);
}
}
// 打印结果
print_freq(freq);
return 0;
}
```
用Cpp语言写一个算法实现统计在输入字符串中各个不同字符出现的频度。(字符串中的合法字符A~Z这26个字母和0~9这10个数字)
在C++中,我们可以使用`std::map`来实现这个功能,因为它能自动将键映射到值,并提供O(1)的时间复杂度来进行查找和插入操作。这里是一个简单的算法:
```cpp
#include <iostream>
#include <string>
#include <map>
std::map<char, int> countCharacters(const std::string& input) {
std::map<char, int> charCount;
for (char c : input) {
// 确保字符在合法范围内
if ('A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9') {
charCount[c]++;
}
}
return charCount;
}
int main() {
std::string str = "Hello World! 12345";
std::map<char, int> freq = countCharacters(str);
// 输出每个字符及其频率
for (const auto& pair : freq) {
std::cout << "Character: " << pair.first << ", Frequency: " << pair.second << '\n';
}
return 0;
}
```
在这个程序中,我们首先创建了一个空的`std::map`,然后遍历输入字符串中的每一个字符。如果字符是字母或数字,我们就将其添加到映射中并增加计数。最后,我们在主函数中打印出每个字符及其出现的次数。
阅读全文