2条回答 默认 最新
- 广大菜鸟 2021-09-24 02:01关注
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<memory.h>
- void strlen_pro(const char*str){
- int size = strlen(str);//strlen()用来计算指定的字符串s 的长度,不包括结束字符”\0”
- //chArray和occurArray按顺序对应出现的字符和它对应的频数,相对于字典dict[ch]=num
- char*chArray = (char*)malloc(sizeof(char)*size);//字符数组
- int*countArray=(int*)malloc(sizeof(int)*size);//频数数组
- // char*occurCharArray=(char*)malloc(sizeof(char)*size);
- char occurCharArray;//表示第一个出现最高频率的字符,其实可以不用上面的字符数组保存所有的相同最高频率的字符,只需要保存第一个
- memset(countArray,-1,sizeof(int)*size);//全部频数置为-1,其实也可以不用,习惯初始化下数组比较好
- // count表示字符-频数组合的个数,in是代表bool型,表示判断字符是否在字符-频数组合里出现,没有就加上
- // maxTime表示字符-频数组合内最大的频数
- // time表示字符-频数组合内字符对应的频数
- // resultCount表示最终结果的个数
- // 思路:先遍历一遍,获取每个字符的频数,再对频数遍历一边,判断出最多频数和为这个频数值的所有字符
- int i,j,count=0,in=0,maxTime=0,time=0,resultCount=0;
- char ch;
- for(i=0;i<size;i++){
- ch = str[i];
- in = 0;
- for(j=0;j<count;j++){
- if(chArray[j]==ch){
- in=1;
- countArray[j]+=1;
- break;
- }
- }
- if(in==0){
- chArray[j]=ch;
- countArray[j]=1;
- count+=1;
- }
- }
- resultCount=1;
- maxTime=countArray[0];
- //occurCharArray[0]=chArray[0];
- occurCharArray=chArray[0];
- for(i=1;i<count;i++){// 根据字符-频率排序
- time=countArray[i];//出现频率
- if(time>maxTime){
- // 出现比当前最大频数还大的频数,之前的数组没用了,需要重新填充,
- // 但是不需要全部清空再填充,只需要用resultCount记录数组有效位置个数
- maxTime=time;
- resultCount=1;
- //occurCharArray[0]=chArray[i];
- occurCharArray=chArray[i];
- }else if(time==maxTime){
- //occurCharArray[resultCount]=chArray[i];
- resultCount+=1;
- }
- }
- if(resultCount==1)
- printf("%d %c\n",size,occurCharArray);
- //printf("%d %c\n",size,occurCharArray[0]);
- else
- printf("%d They are too many!!!\n",size);
- free(countArray);
- free(chArray);
- //free(occurCharArray);
- }
- int main(){
- char str[1000];
- scanf("%s",str); //abcde
- strlen_pro(str);
- system("pause"); // 这个是因为我用vscode,它不加这句会闪退
- return 0;
- }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
- ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
- ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
- ¥15 vscode开发micropython,import模块出现异常
- ¥20 Excel数据自动录入表单并提交
- ¥30 silcavo仿真,30分钟,只需要代码
- ¥15 FastReport 怎么实现打印后马上关闭打印预览窗口
- ¥15 利用3支股票数据估计其均值和方差的95%置信区间。
- ¥15 微信小程序运行一项功能时,弹出未知错误弹框,检查代码没有问题
- ¥15 ATAC测序生成self-pseudo replicates之前是否要进行去线粒体reads