刷題-第一次只出現1次的字符

查找第一次只出現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;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章