在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
2013-03-21 11:42
453 查看
#include <iostream> #include <string> #include <assert.h> using namespace std; struct Record { int index; int count; }; char findFirstOnlyChar(string& s) { Record records[26]; memset(records, 0, sizeof(Record)*26); //给数组分配动态内存。 for (int i = 0; i < s.length(); i++) { assert(s[i] <= 'z' && s[i] >= 'a'); //很关键,面试的时候会加分。 records[s[i]-'a'].count++; records[s[i]-'a'].index = i; } int index = s.length(); for (int i = 0; i < s.length(); i++) { if (records[i].count == 1 && index >= records[i].index) { index = records[i].index; } } return s[index]; } int main() { string s; cout<<"请输入字符串"<<endl; cin>>s; cout<<findFirstOnlyChar(s); system("pause"); }
创建一个含有index的数据结构是必要的,网上有不少直接用int char[256]的,那样做不符合题意中第一次出现的条件。
相关文章推荐
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.
- Java:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 每日一道算法题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 算法习题17:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b;
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 算法十二:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 15. Google面试题:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符。如abaccdeff输出b