提刀只为她


私信TA

用户名:dotcpp0599710

访问量:1004

签 名:

等  级
排  名 7228
经  验 1335
参赛次数 0
文章发表 5
年  龄 0
在职情况 学生
学  校 中南大学
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

//题目描述

//给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。

//如果没有,输出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 人评分

  评论区

  • «
  • »