首页 > 解决方案 > 字符串中出现的字符(区分大小写)

问题描述

一个字符串作为输入传递,一个表示字母位置值的整数,一个表示大写或小写的字符“u”或“l”作为输入传递。输出应给出 N 值字母(区分大小写)出现的次数。

代码正在运行,6 个隐藏测试用例中 3 个隐藏测试用例通过,3 个隐藏测试用例失败。请帮忙!!:(

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int N,Count=0,i,len;
    char Ar[26]={'a','b','c','d','e','f','g','h','i','j','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'},M,Str[1000];
    scanf("%[^\n]",Str);
    //printf("%s",Str);
    scanf("%d ",&N);
    //printf("%d",N);
    scanf("%c",&M);
    //printf("%c",M);

    len=strlen(Str);
    if(M=='L' || M=='l')
     {
        for(i=0;i<len;i++)
        {
            if(Str[i]==Ar[N-1])
            {
                Count++;
            }
        }
     }
    else if(M=='U' || M=='u')
    {
        for(i=0;i<len;i++)
        {

            if(Str[i]==toupper(Ar[N-1]))
            {
                Count++;
            }
        }
    }
    if(Count==0)
    {
        printf("-1");
    }
    else
    {
        printf("%d",Count);
    }

}

标签: clogic

解决方案


@VishnuPriya,我认为错误在于您的数组。char Ar[26]在该数组中重复的字符很少*('h','i','j')*

将数组修改为:-

char Ar[26] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j','k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'} 

确保没有字符重复。


推荐阅读