第一個只出現一次的字符位置:
在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置
用哈希表,遍歷兩次,第一次統計個數,第二次判斷第一個只出現一次的
代碼:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
map<char,int> tab;
for(int i=0;i<str.size();++i)
tab[str[i]]++;
for(int i=0;i<str.size();++i){
if(tab[str[i]]==1)
return i;
}
return -1;
}
};
字符流中第一個不重複的字符:
請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。
用一樣的思路;
class Solution
{
public:
//Insert one char from stringstream
void Insert(char ch)
{
s+=ch;
tab[ch]++;
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce()
{
for(int i=0;i<s.size();i++){
if(tab[s[i]]==1)
return s[i];
}
return '#';
}
private:
string s;
map<char,int> tab;
};