写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为a-z这26个字母和0-9这10个数字)。

时间: 2023-05-31 14:20:09 浏览: 357
### 回答1: 以下是一种 Python 实现该算法的方法: 1. 定义一个长度为36的列表,用来记录各个字符的频度。 2. 遍历输入字符串中的每一个字符: a. 如果该字符是合法的字符,则将该字符的频度加 1。 b. 否则,忽略该字符。 3. 将统计结果写入文件,每行一个字符和它的频度。 以下是该算法的代码实现: ``` def count_frequency(input_string): frequency = [0] * 36 for char in input_string: if char.isdigit(): frequency[int(char)] += 1 elif char.isalpha(): frequency[ord(char) - ord('a') + 10] += 1 return frequency def save_to_file(frequency, file_path): with open(file_path, 'w') as f: for i in range(36): if i < 10: char = str(i) else: char = chr(ord('a') + i - 10) f.write('{}: {}\n'.format(char, frequency[i])) input_string = 'abcdefghijklmnopqrstuvwxyz0123456789' frequency = count_frequency(input_string) save_to_file(frequency, 'frequency.txt') ``` ### 回答2: 要实现这个算法,我们可以按以下步骤进行: 1. 根据题目要求,定义一个长度为36的整型数组,用于统计a-z这26个字母和0-9这10个数字各自出现的次数,同时定义一个字符串变量用来存储输入的字符串。 2. 在读入字符串时,我们需要遍历输入的每一个字符,判断该字符是否为合法字符(即是否为a-z这26个字母和0-9这10个数字中的一个),如果是,则将该字符的计数器+1;如果不是,则跳过该字符。 3. 最后,将各个字符出现的频度存入一个文件中。为方便查看,可以按频度从高到低将字符和其出现次数依次输出到文件中。 下面是C++的伪代码描述: ``` int count[36] = {0}; // 用来存储字符出现频度的数组,共36个元素 string str; // 存储输入的字符串 // 读入字符串 cin >> str; // 遍历字符串中的所有字符 for(int i = 0; i < str.length(); i++){ char ch = str[i]; // 判断该字符是否为合法字符 if((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')){ if(ch >= 'a' && ch <= 'z'){ // 对于a-z这26个字母 count[ch - 'a']++; } else{ // 对于0-9这10个数字 count[ch - '0' + 26]++; } } } // 将统计结果写入文件 ofstream out("result.txt"); // 打开输出文件 if(out.is_open()){ // 判断是否成功打开文件 for(int i = 0; i < 26; i++){ // 输出a-z这26个字母的结果 char ch = i + 'a'; out << ch << ":" << count[i] << endl; } for(int i = 26; i < 36; i++){ // 输出0-9这10个数字的结果 char ch = i + '0' - 26; out << ch << ":" << count[i] << endl; } out.close(); // 关闭输出文件 } else{ cout << "Failed to open the output file!" << endl; } ``` 以上便是统计输入字符串中各个不同字符出现频度并将结果存入文件的算法实现方法。 ### 回答3: 算法思路: 该算法将输入字符串中26个字母和10个数字的出现频率统计到一个大小为36的数组freq中,数组下标表示字符的ascii码。 1. 首先,初始化freq数组,所有元素赋值为0。 2. 然后,遍历输入字符串,当遍历到一个字符时,将其ascii码存放在tem变量中,判断该字符是否符合合法字符的要求。 3. 当该字符符合要求时,将数组freq中的对应元素的值增加1。 4. 最后,将freq数组中的结果写入文件。 算法代码: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 1000 int freq[36];//用于统计字符频率的数组 void Init() { memset(freq, 0, sizeof(freq));//将数组初始化为0 } void Count(char * str) { int tem; while (*str) { tem = (int)(*str);//将字符转换为ascii码 if (tem >= 48 && tem <= 57)//当字符为数字时,统计数字的频率 freq[tem - 48]++; else if (tem >= 97 && tem <= 122)//当字符为小写字母时,统计字母的频率 freq[tem - 87]++; str++; } } int WriteToFile(char * file) { FILE *fp; int i; if ((fp = fopen(file, "w+")) == NULL) { printf("can not open file %s\n", file); return -1; } for (i = 0; i < 36; i++) { if (i < 26) fprintf(fp, "%c: %d\n", (char)(i + 97), freq[i]); else fprintf(fp, "%c: %d\n", (char)(i + 22), freq[i]); } fclose(fp); return 1; } int main() { char str[MAX] = "hello123world123"; char file[] = "result.txt"; Init(); Count(str); WriteToFile(file); return 0; } ``` 注:该代码使用的是C语言,实现了在输入字符串中各个不同字符出现的频度统计和将结果存入文件的功能。

相关推荐

最新推荐

recommend-type

java统计字符串中指定元素出现次数方法

主要介绍了java统计字符串中指定元素出现次数方法,需要的朋友可以参考下
recommend-type

python简单算法04:判断一个字符串是否为回文串的排列之一

所有字符中,统计每个字符出现的次数,最多只有一个字符的统计次数是奇数,剩下的必须都是偶数。即奇数只能为1或0个,例如acca,accbcca等 from collections import Counter def palindromic(s): #统计所有字符出现...
recommend-type

C语言实现输入一个字符串后打印出该字符串中字符的所有排列

主要介绍了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,是数学中非常实用的排列算法,需要的朋友可以参考下
recommend-type

使用java自带des加密算法实现文件加密和字符串加密

主要介绍了使用java自带des加密算法实现文件加密和字符串加密的示例,需要的朋友可以参考下
recommend-type

C语言中压缩字符串的简单算法小结

主要介绍了C语言中可用于实现字符串压缩的简单算法小结,列举了包括哈夫曼算法等三个核心的程序实现算法,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。