c - 字符串中出现的字符(区分大小写)
问题描述
一个字符串作为输入传递,一个表示字母位置值的整数,一个表示大写或小写的字符“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);
}
}
解决方案
@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'}
确保没有字符重复。
推荐阅读
- java - Java比较两个数组以进行登录
- python - 如何在字符串列表中获取子字符串的部分匹配?
- amazon-web-services - AWS S3:如何通过 Content-Type 限制文档上传?
- templates - ServiceNow 模板 - “与其他用户共享此票证”
- java - Keycloak REST API 无法从用户角色映射中删除客户端级角色
- spring-data-jpa - Spring Data JPA @Modifying 无法刷新更改
- javascript - 使用 JavaScript 使用多个下拉列表进行搜索过滤
- keycloak - 首次代理登录后keycloak UPDATE_PROFILE_ERROR
- vaadin-grid - Vaadin 14:在网格中关闭缓冲编辑器
- javascript - Axios 发布表单数据在本机反应中无法正常工作