题解 | #计算某字符出现次数#

计算某字符出现次数

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;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务