查找第一次只出現1次的字符:
在一個字符串(0<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).(從0開始計數)
解題思路:
直觀的考慮就是將字符串中每個字符出現的次數統計下來,然後找出第一次出現1次的字符。
C++中STL中map是一種關聯容器,底層實現結構採用紅黑樹。map以key-value結構的方式存儲數據,關鍵字key起到了索引作用,value對應索引的數據,map的迭代器不允許修改key的值,但是可以通過key修改對應的value,map內按照key的值自動排序。map支持下標操作,可以利用key訪問value,訪問過程中如果返現key值不存在則向map中插入該key和默認值
std::map<char, int> my_map;
my_map['a']=1;
利用map數據結構統計字符串中每個字符出現的次數,key爲字符,對應的value爲出現的次數,而後依序遍歷字符串每個字符,查看其出現的次數:
class Solution {
public:
int FirstNotRepeatingChar(string str) {
map<char,int> m;
for(auto value:str){
m[value]++;
}
for(int i=0;i<str.size();i++){
if(m[str[i]]==1)
return i;
}
return -1;
}
};