Microsoft100——17.出现一次的字符

来源:互联网 发布:北京大学大数据研究院 编辑:程序博客网 时间:2024/04/29 15:12

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b.

分析:最简单的方法就是不断的循环,得出每一个字符的出现次数,但是这样时间复杂度为O(n2),后来想了几种改进算法,虽然有点进步但时间复杂度任然是O(n2)。

最后还是利用哈希表的思想,利用空间换时间的策略,得到了一个很好的方法。

因为是一个字符,所以我们建立一个256的数组,利用字符的ASCII码的值为下标。记录字符出现的次数。

代码如下:

#include <iostream>#include <string>using namespace std;void findChar(string &s){int str[256]={0};for (int i=0 ; i<s.size() ; ++i){str[s[i]]++;}for (int i=0 ; i<s.size() ; ++i){if (str[s[i]]==1){cout<<s[i]<<endl;return;}}}void main(){string s="abaccdeff";findChar(s);system("pause");}

0 0
原创粉丝点击