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

  • Post author:
  • Post category:其他


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

"no"

输入格式

一个字符串,长度小于 100000。

输出格式

输出第一个仅出现一次的字符,若没有则输出

"no"

样例输入

abcabd

样例输出

c

首先我们先定义一个data[100000],这么大的数组足以保存字符串。

然后我们定义一个zm[26],这个数组用来保存26个字母。(当然为了好懂可以定义zm[27],不考虑zm[0]就行)

定义一个cs[26],这个数组用来保存26个字母,每个字母出现的次数。

我们先遍历一遍这个数组,把cs数组的元素给弄出来。

#include <stdio.h>
#include <string.h>

int cs[26];
int flag=0;
char data[100000];
char zm[26];
int main()
{
    for(int i=0;i<26;i++)
    {
        zm[i]='a'+i;                                   //26个字母
    }
    gets(data);
    int length=strlen(data);
    for(int i=0;i<length;i++)
    {
        for(int j=0;j<26;j++)
        {
            if(data[i]==zm[j])
            {
                cs[j]=cs[j]+1;                         //对应的字母加1
            }
        }
    }
    for(int i=0;i<length;i++)
    {
        if(cs[(int)data[i]-97]==1)                     //看看这个字母是不是只出现一次
        {
            flag=1;
            printf("%c\n",data[i]);
            break;
        }
    }
    if(flag==0)
    {
        printf("no\n");
    }
    return 0;
}



版权声明:本文为m0_52708559原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。