题解 | #计算某字符出现次数#
计算某字符出现次数
https://www.nowcoder.com/practice/a35ce98431874e3a820dbe4b2d0508b1
我的这个比较复杂
设置了一个27*2大小的二维数组lib[27][2](第一位存预设字符,第二位存该字符出现的次数)当做字典
0-25存字母
26存非字母的字符
#include <stdio.h> int main() { char arry[1000]={'\0'}; char ch=0; int i=0,S_num=0,num=0;//S_num存接收的字符串长度,num存某字符在字典中的位置 int lib[27][2]={0};//预设字典 num='A'; for(i=0;i<26;i++)//赋初值 { /*printf("i:%d\n",i);*/ for(S_num=0;S_num<2;S_num++)// { /*printf("S_num:%d\n",S_num);*/ if(S_num==0)//放入A-Z大写字母 { lib[i][S_num]=num; } if(S_num==1)//赋初值0{代表对应字母出现的次数} { lib[i][S_num]=0; } } S_num=0; num++; } S_num=0; num=0; while(~scanf("%c",&arry[S_num]))//接受字符串 { if(arry[S_num]=='\n') { break; } S_num++; } scanf("%c",&ch);//接收待查询字符 for(i=0;i<26;i++)//判断字符在字典中的出现位置 { if(lib[i][0]==ch)//大写 { break; } else if(lib[i][0]==ch-32)//小写(将小写转化为大写去判断) { break; } } num=i; if(num==26)//当i=26时说明带查询字符不在预设的字母字典中 { lib[num][0]=ch;//将字典[26][0]直接变为待查询字符 } for(i=0;i<S_num;i++) { if(num==26) { if(arry[i]==lib[num][0]) { lib[num][1]++; } } else//不区分大小写 { if(arry[i]==lib[num][0])//将字典中大写与字符串中的字符比较 { lib[num][1]++;//检测出计数位+1 } else if(arry[i]==lib[num][0]+32)//将字典中大写转化为小写与字符串中的字符比较 { lib[num][1]++;//检测出计数位+1 } } } printf("%d",lib[num][1]); return 0; }