字符串中的字符出现(区分大小写)

时间:2018-07-13 09:13:46

标签: c logic

传递一个字符串作为输入,一个表示字母位置值的整数,并传递一个表示大写或小写字母的字符“ 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);
    }

}

1 个答案:

答案 0 :(得分:1)

@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'} 

确保没有字符重复。