剑指offer 面试题55 字符流中第一个不重复的字符(push_back+resize出问题)
2016-12-17 00:21
253 查看
这道题考察对哈希表的应用.
总结如下:
1. 解题思路为,大小为256的hash.
以 hash_table[i]=value 为例
i表示对应字符
value表示此字符未出现,出现过一次,出现过多次.
value==-1:未出现
value>=0:出现过一次并且出现的顺序=value
value==-1:出现过多次
2.关于STL vector,原来resize和push_back一起使用是会出大问题的.
第一种情况(resize+push_back)
结果:
0 0 1 2
第二种情况:不要resize
第三种情况:不要push_back
上面二,三种代码都可以正确结果
1 2
3.int最大值:0x7fffffff;
下面是代码
总结如下:
1. 解题思路为,大小为256的hash.
以 hash_table[i]=value 为例
i表示对应字符
value表示此字符未出现,出现过一次,出现过多次.
value==-1:未出现
value>=0:出现过一次并且出现的顺序=value
value==-1:出现过多次
2.关于STL vector,原来resize和push_back一起使用是会出大问题的.
第一种情况(resize+push_back)
std::vector<int> a; a.resize(2); a.push_back(1); a.push_back(2); std::vector<int>::iterator itr=a.begin(); for(;itr!=a.end();itr++){ std::cout<<*itr<" "; }
结果:
0 0 1 2
第二种情况:不要resize
std::vector<int> a; a.push_back(1); a.push_back(2); std::vector<int>::iterator itr=a.begin(); for(;itr!=a.end();itr++){ std::cout<<*itr<<std::endl; }
第三种情况:不要push_back
std::vector<int> a; a.resize(2); a[0]=1; a[1]=2; std::vector<int>::iterator itr=a.begin(); for(;itr!=a.end();itr++){ std::cout<<*itr<<std::endl; }
上面二,三种代码都可以正确结果
1 2
3.int最大值:0x7fffffff;
下面是代码
class Solution { public: //Insert one char from stringstream Solution():index(0){ for(int i=0;i<256;i++){ str_table.push_back(-1); } } void Insert(char ch) { if(str_table[ch]==-1){ str_table[ch]=index; }else{ str_table[ch]=-2; } index++; } //return the first appearence once char in current stringstream char FirstAppearingOnce() { int min=0x7fffffff; char current_char='#'; for(int i=0;i<256;i++){ if(str_table[i]>=0 && str_table[i]<min){ current_char=(char)i; min=str_table[i]; } } return current_char; } private: int index; std::vector<int> str_table; };
相关文章推荐
- 剑指offer-面试题55:字符流中第一个不重复的字符
- 《剑指Offer》面试题55:字符流中第一个不重复的字符
- 剑指offer--面试题55:字符流中第一个不重复的字符
- 剑指offer——面试题55:字符流中第一个不重复的字符
- 剑指offer——面试题55:字符流中第一个不重复的字符
- (剑指Offer)面试题55:字符流中第一个不重复的字符
- 《剑指Offer》学习笔记--面试题55:字符流中第一个不重复的字符
- 【剑指Offer】面试题55:字符流中第一个不重复的字符
- 【剑指Offer学习】【面试题55:字符流中第一个不重复的字符】
- 面试题55:字符流中第一个不重复的数字
- 面试题55:字符流中第一个不重复的字符
- 剑指offer 面试题55 字符流中第一个不重复的字符
- 剑指offer_面试题55_字符流中第一个不重复的字符 *
- 剑指offer面试题55 字符流中第一个不重复的字符(Java实现)
- 面试题55 字符流中第一个不重复的字符
- 面试题55:字符流中第一个不重复的字符
- 《剑指offer》:[55]字符流中第一个不重复的字符
- 剑指offer-面试题55-字符流中第一个不重复的字符
- 剑指Offer——字符流中第一个不重复的字符
- 经典考题——无重复字符问题(查找字符串中第一个无重复字符)