统计一个字符串中出现的最大频率字符;若有频率相同字符,按字典序输出
2014-06-23 11:05
531 查看
#include <stdio.h> #include <string.h> /**统计一个字符串中出现的最高频率字符,如果频率相同,按字典序输出*/ /** *先排序,然后统计 */ int Partition(char *s, int low, int high) { char temp; temp = s[low]; while(low < high) { while(low<high && s[high]>=temp) --high; s[low] = s[high]; while(low<high && s[low]<=temp) ++low; s[high] = s[low]; } s[low] = temp; return low; } void QuickSortOfString(char *s, int low, int high) { int label; while(low < high) { label = Partition(s,low,high); QuickSortOfString(s,low,label-1); low = label + 1; } } char MaxFreChar(char *s, int n) { if(n >20 || s == NULL) return 0; QuickSortOfString(s,0,n-1); int num[21],status[21],i,j,k; for(i=0;i<21;i++) { num[i] = 0; status[i] = 1; } for(j=0; j<n-1; j++) { if(1 == status[j]) { for(k=j+1; k<n; k++) { if(s[j] == s[k]) { ++num[j]; status[k] = 0; } } } } int max,index,m; max = num[0]; //一定要养成定义变量初始化的习惯! index = 0; for(m=1; m<21; m++) { if(num[m] > max) { max = num[m]; index = m; } } return s[index]; } /**桶排序的统计方法*/ char MaxFreCharTong(char *s, int n) { int num[256],i,j,k; for(i=0; i<256; i++) { num[i] = 0; } for(j=0;j<n;j++) ++num[s[j]]; int max,index; max = num[0]; index = 0; for(k=1;k<256;k++) { if(num[k]>max) { max = num[k]; index = k; } } return (char)index; } int main() { char s[21]; gets_s(s); QuickSortOfString(s, 0, strlen(s)-1); char maxFreChar; maxFreChar = MaxFreChar(s,strlen(s)); printf("%c\n",maxFreChar); puts(s); getchar(); return 0; }
相关文章推荐
- 手动输入一个字符串,仅限小写字母,统计并输出每个字符在字符串中出现的次数,并输出。
- 针对一个文件 统计其中的单词和字符数 找出文件中出现次数最多的单词数 将文件中出现的单词按频率进行排序并输出
- 实现一个控制台程序,给定一段英文字符串,统计其中各个英文单词(4字符以上含4字符)的出现频率。
- 005求一个字符串中出现相同且长度最长的字符串,输出它及其首字符位置
- 最大堆---实现一个简化的搜索提示系统。给定一个包含了用户query的日志文件,对于输入的任意一个字符串s,输出以s为前缀的在日志中出现频率最高的前10条query。
- 给定一个字符串,统计一下哪个字符出现次数最大
- 读入一个字符串,统计字符串中不同字符的出现频率。
- 统计字符串中每个字符的出现频率,返回一个 Object,key 为统计字符,value 为出现频率
- 一个一维整形数组,若干个数字,统计数组中不同的数字出现的次数,并按照出现频率从小到大排序输出,相同频率按数字大小排序输出
- 统计一个字符串中每个字符出现的次数,并按自然顺序输出
- 从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件
- 字符串压缩--统计字符出现的最大次数
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- 统计字符在字符串中或者数字在数字数组中出现的频率
- 用递归实现查找字符串中相同字符连续出现次数的最大值
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b;
- 输入一行子串,找出其中出现的相同且长度最长的字符串,输出它及其首字符的位置
- 统计一个字符串中字符出现的次数(带上机课时候发现学生都有很好的思路bitmap)
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 递归算法查找字符串中相同字符连续出现的最大次数