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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02:找第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

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

总时间限制: 2017-07-1218:36:28
1000ms
 
内存限制: 
65536kB
描述

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

输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
错误答案:9分
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;
char a[30][2];
string w;
int main()
{
    int i,n,k;
    char j=a;
    for(i=1;i<=26;i++)
  {
        a[i][1]=j;
        j++;
  }
  cin>>w;
  n=w.length();
  for(i=0;i<n;i++)
  {
      for(k=1;k<=26;k++)
      {
            if(a[k][1]==w[i])  {a[k][2]++;continue;
            }
      }    
  }
  int f=0;
  for(i=1;i<=26;i++)
  {
        if(a[i][2]==1){f=1;cout<<a[i][1]<<endl;break;}         
  }
  if(f==0) cout<<"no"<<endl;
  return 0;
}

 


正确答案:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main()
{
char a[100001];
int b,c[100001]={0};
gets(a);
b=strlen(a);
for(int i=0;i<b;i++)
{
for(int j=0;j<b;j++)
{
if(a[i]!=a[j])c[i]++;
}
if(c[i]==b-1)
{
cout<<a[i];return 0;
}
}
cout<<"no";
return 0;
}

 

以上是关于02:找第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

C++信奥赛题目——第一个只出现一次的值

数字出现的次数

《剑指Offer——字符串中第一个只出现一次的字符》代码

最强解析面试题:第一个只出现一次的字符

最强解析面试题:第一个只出现一次的字符

50-02 字符流中第一个不重复的字符( 时间空间效率的平衡)