noi-7804 找第一个只出现一次的字符
2017-09-10 16:14
120 查看
找第一个只出现一次的字符
总时间限制: 1000ms 内存限制: 65536kB描述
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
输入
一个字符串,长度小于100000。
输出
输出第一个仅出现一次的字符,若没有则输出no。
样例输入
abcabd
样例输出
c
这个题比较容易出错的地方在于:它要求输出第一个出现的只出现一次的字符,在第一次遍历的时候,可能可以找到很多个只出现一次的字符,那么第二次遍历的时候就需要找到这些字符,并记录谁出现的最早。
#include <stdio.h> #include <string.h> int main() { char s[100005]; int n[26]={0},num=0; gets(s); char one; for(int i=0;s[i]!='\0';i++) { if(s[i]=='a')n[0]+=1; if(s[i]=='b')n[1]+=1; if(s[i]=='c')n[2]+=1; if(s[i]=='d')n[3]++; if(s[i]=='e')n[4]++; if(s[i]=='f')n[5]++; if(s[i]=='g')n[6]++; if(s[i]=='h')n[7]++; if(s[i]=='i')n[8]++; if(s[i]=='j')n[9]++; if(s[i]=='k')n[10]++; if(s[i]=='l')n[11]++; if(s[i]=='m')n[12]++; if(s[i]=='n')n[13]++; if(s[i]=='o')n[14]++; if(s[i]=='p')n[15]++; if(s[i]=='q')n[16]++; if(s[i]=='r')n[17]++; if(s[i]=='s')n[18]++; if(s[i]=='t')n[19]++; if(s[i]=='u')n[20]++; if(s[i]=='v')n[21]++; if(s[i]=='w')n[22]++; if(s[i]=='x')n[23]++; if(s[i]=='y')n[24]++; if(s[i]=='z')n[25]++; } int min=500000; for(int j=0;j<26;j++) { if(n[j]==1) { num++; for(int i=0;s[i]!='\0';i++) { if(s[i]==j+'a') { if(min>i)min=i; } } } } if(num==0)printf("no"); else printf("%c",s[min]); return 0; }
简单方法:(from城)
#include <bits/stdc++.h> using namespace std; #define maxn 100005 char arr[maxn]; int main() { //freopen("in.txt","r",stdin); int flag=0,i,j; gets(arr); for(i=0; i<strlen(arr); i++) { for(j=0; j<strlen(arr); j++) if(arr[i]==arr[j]&&i!=j) flag=1; if(flag==0) { printf("%c\n",arr[i]); return 0; } flag=0; } printf("no\n"); }
#include <bits/stdc++.h> using namespace std; #define maxn 100005 char str[maxn]; int main() { //freopen("in.txt","r",stdin); int arr[26]; memset(arr,0,sizeof(arr)); gets(str); int l=strlen(str); for(int i=0; i<l; i++) arr[str[i]-'a']++; for(int i=0; i<l; i++) if(arr[str[i]-'a']==1) { printf("%c\n",str[i]); return 0; } printf("no\n"); return 0; }
相关文章推荐
- 【字符串】NOI--ch0107--02--找第一个只出现一次的字符(指针数组,有技巧)
- 笔试算法题(10):深度优先,广度优先以及层序遍历 & 第一个仅出现一次的字符
- 35 - 找出字符串中第一个只出现一次的字符
- 只允许遍历一遍字符串,找出字符串中第一个只出现一次的字符
- AS3 面试题35 在一个字符串中找出第一个只出现一次的字符
- 面试题35_第一个只出现一次的字符
- 《剑指offer》——第一个只出现一次的字符位置
- (C++)剑指offer-34:第一个只出现一次的字符位置(时间空间效率的平衡)
- 在一个字符串中找到第一个只出现一次的字符。
- 找出字符串中第一个只出现一次的字符
- 华为OJ(找出字符串中第一个只出现一次的字符)
- 求一个字符串中第一个出现一次的字符
- 《剑指Offer》学习笔记--面试题35:第一个只出现一次的字符
- 算法题之查找第一个只出现一次的字符
- 第一个只出现一次的字符
- 第一个只出现一次的字符
- 一个字符串中查找第一个只出现一次的字符。 要求复杂度为O(N).
- 找出字符串中第一个只出现一次的字符
- 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
- 第一个只出现一次的字符