題目鏈接:字符流中第一個不重複的字符
題意:
請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符“google"時,第一個只出現一次的字符是"l"。如果沒有出現,返回 ‘#’
解題思路:
插入時將字符的個數記下,然後遍歷字符串一次就可以了
class Solution
{
public:
//Insert one char from stringstream
void Insert(char ch){
s += ch; // 字符串拼接
a[ch]++; // 記錄每個字符出現的次數
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce(){
int len = s.size();
for(int i = 0; i < len; i++){
if(a[s[i]] == 1){ // 第一次出現的字符數爲1
return s[i]; // 返回字符
}
}
return '#'; // 否則返回'#'
}
private:
string s;
int a[26];
};