1702:找第一个只出现一次的字符

错误

#include<bits/stdc++.h>
using namespace std;
int main()
{
char zm[27] = {};
long long cs[27] = {},flag = 0;
memset(cs,0,sizeof(cs));
string a;
getline(cin,a);
zm[1] = 'a';
for(int i = 1;i <= 26;i ++){
zm[i] = 'a' + i - 1;
}
for(int i = 0;a[i] != '\0';i ++){
for(int j = 1;j <= 26;j ++){
if(a[i] == zm[j]){
cs[j] ++;
}
}
}
for(int i = 1;i <= 26;i ++){
if(cs[i] == 1){
printf("%c",zm[i]);
flag = 1;
break;
}
}
if(flag == 0){
printf("no");
}
return 0;
}

很不明显的一个错误,导致一直卡9分(
这里输出的时候是按照字典序输出的,比如输入cbabd的时候还是会输出a

#include<bits/stdc++.h>
using namespace std;
int main()
{
char zm[27] = {};
long long cs[27] = {},flag = 0;
memset(cs,0,sizeof(cs));
string a;
getline(cin,a);
zm[1] = 'a';
for(int i = 1;i <= 26;i ++){
zm[i] = 'a' + i - 1;
}
for(int i = 0;a[i] != '\0';i ++){
for(int j = 1;j <= 26;j ++){
if(a[i] == zm[j]){
cs[j] ++;
}
}
}
for(int i = 0;a[i] != '\0';i ++){
for(int j = 1;j <= 26;j ++){
if(a[i] == zm[j] && cs[j] == 1){
printf("%c",zm[j]);
return 0;
}
}
}
if(flag == 0){
printf("no");
}
return 0;
}

输出的时候把原字符串遍历一遍,同时检测当前字符出现的次数是否为1,如果是直接输出结束就完了。

posted @   Qwehhh  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示