解题思路:
注意事项:
参考代码:
//题目描述
//给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。
//如果没有,输出no。
//输入格式
//一个字符串,长度小于100000。
//输出格式
//输出第一个仅出现一次的字符,若没有则输出no。
//样例输入
//abcabd
//样例输出
//c
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[1000000] = { 0 };
gets(ch);//输入ch
char letter[26] = { 0 };
int count[26] = { 0 };
char letteronce[26] = { 0 };
for (int i = 0; i < 25; i++)
{
letter[0] = 97;
letter[i + 1] = letter[i] + 1;
}//将数组初始化为a-z
int t = 0;
int n = 26;
int len = strlen(ch);
for (int i = 0; i < len; i++)//遍历输入的字符串
{
int s ;
for ( s = 0; s < 26; s++)
{
if (ch[i] == letter[s])
{
count[s]++;
break;
}//找到对应字母,并记录其次数
}
if (count[s] == 1)
letteronce[t++] = letter[s];//次数为1,将其记入可变字符串
if (count[s] == 2)
{
int m;
for (m = 0; m < 26; m++)
if (letteronce[m] == letter[s])
{
letteronce[m] = 0;
break;
}
n--;
}//次数为2时,将可变字符串中对应字母变为0,总次数减一
if (n == 0)
break;
}
if (n == 0)
printf("no");
else
{
for (int s = 0; s < 26; s++)
{
if (letteronce[s] != 0)
{
printf("%c", letteronce[s]);
break;
}
if (s == 25)
printf("no");
}
}
return 0;
}
0.0分
1 人评分
求组合数 (C语言代码)浏览:1211 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:614 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:624 |
A+B for Input-Output Practice (C语言代码)浏览:506 |
青年歌手大奖赛_评委会打分 (C语言代码)浏览:2248 |
生日日数 (C语言代码)浏览:1575 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:461 |
拆分位数 (C语言代码)浏览:464 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:552 |
IP判断 (C++代码)浏览:787 |