写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件
时间: 2023-05-31 16:20:49 浏览: 225
### 回答1:
1. 读取输入字符串。
2. 建立一个字典,用于存储每个字符出现的频度。
3. 遍历输入字符串,对于每个字符,如果它已经在字典中出现过,则将其对应的频度加1;否则,在字典中添加该字符,并将其频度设为1。
4. 将字典中的键值对按照键的字典序排序。
5. 将结果写入文件,每行一个字符及其出现频度,格式为“字符:频度”。
Python代码实现:
```
def count_chars_frequency(input_str, output_file):
freq_dict = {}
for char in input_str:
if char in freq_dict:
freq_dict[char] += 1
else:
freq_dict[char] = 1
sorted_freq = sorted(freq_dict.items(), key=lambda x: x[])
with open(output_file, 'w') as f:
for char, freq in sorted_freq:
f.write(f"{char}:{freq}\n")
```
调用示例:
```
input_str = "hello world"
output_file = "result.txt"
count_chars_frequency(input_str, output_file)
```
输出结果:
```
:1
d:1
e:1
h:1
l:3
o:2
r:1
w:1
```
### 回答2:
首先,我们要明确本次统计的字符是指ASCII码表中的字符。
算法步骤如下:
1. 定义一个包含256个元素的散列表(数组),对应ASCII码表中的每一个字符,初始化每个元素的值为0。
2. 读入输入字符串,逐个字符地遍历字符串。
3. 对于每个遍历到的字符,将对应的散列表元素的值加1。
4. 遍历结束后,将散列表所有元素的下标和值按顺序写入输出文件。
Java实现代码如下:
```java
import java.io.*;
import java.util.Arrays;
public class CharFrequency {
public static void main(String[] args) throws Exception {
String inputFileName = "input.txt"; // 读入文件名
String outputFileName = "output.txt"; // 输出文件名
int[] frequency = new int[256]; // 散列表
BufferedReader reader = new BufferedReader(new FileReader(inputFileName));
int ch;
while ((ch = reader.read()) != -1) {
frequency[ch]++;
}
reader.close();
PrintWriter writer = new PrintWriter(new FileWriter(outputFileName));
for (int i = 0; i < 256; i++) {
if (frequency[i] > 0) {
writer.println((char) i + "\t" + frequency[i]);
}
}
writer.close();
}
}
```
在该代码中,我们利用了Java提供的BufferedReader和PrintWriter类读写文件,用int数组frequency作为散列表统计字符出现的频率。最后将结果输出到文件中。
### 回答3:
首先,我们需要了解字符串和频率的概念。字符串是由一系列字符组成的,例如“hello world”就是一个字符串,它包含11个字符。频率是指某个事件在一定时间内发生的次数,例如在50次投掷硬币中出现正面的频率为0.5。
接下来,我们需要设计一个算法来统计字符串中每个字符出现的频率。这个算法可以分为以下几个步骤:
1. 声明一个变量freq,用来存储每个字符出现的频率。
2. 遍历输入字符串的每个字符,如果这个字符在freq中已经存在,就将它的频率加1;如果不存在,就将它添加到freq中,并将它的频率初始化为1。
3. 将freq中的每个字符和它的频率输出到文件中,格式为“字符:频率”。
下面是Python代码实现:
```python
def char_frequency(input_string):
freq = {}
for char in input_string:
if char in freq:
freq[char] += 1
else:
freq[char] = 1
with open('result.txt', 'w') as file:
for char in freq:
file.write(char + ':' + str(freq[char]) + '\n')
```
这个函数接受一个字符串作为参数,返回值为空。它的主要功能是统计字符串中每个字符出现的频率,并将结果存储在result.txt文件中。可以使用以下代码来调用这个函数:
```python
input_string = 'hello world'
char_frequency(input_string)
```
执行完这段代码后,将会在当前目录下生成一个result.txt文件,它的内容为:
```
h:1
e:1
l:3
o:2
:1
w:1
r:1
d:1
```
阅读全文