当前位置 博文首页 > 琼儿飞的博客:【Leetcode】387. 字符串中的第一个唯一字符(简

    琼儿飞的博客:【Leetcode】387. 字符串中的第一个唯一字符(简

    作者:[db:作者] 时间:2021-09-03 18:23

    1. 题目

    给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

    ?

    示例:

    s = "leetcode"
    返回 0

    s = "loveleetcode"
    返回 2
    ?

    提示:你可以假定该字符串只包含小写字母。

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    ?

    2. 解法

    方法1.哈希表

    把字符串存储为哈希表,遍历哈希表

    //hash map
    class Solution {
    public:
        int firstUniqChar(string s) {
            unordered_map<char, int> letter_count;
    
            if(s.empty())
            ;
            else{
                for(auto c:s){
                    letter_count[c]++;
                    // cout<<c<<letter_count[c]<<" ";
                }
                // cout<<endl;
                // for(auto c:s){
                //     cout<<c<<letter_count[c]<<" ";
                // }
                int index=0;
                for(auto c:s){
                    if(letter_count[c]==1){
                        return index;
                    }
                    index++;
                }
            }
           
            return -1;
    
        }
    };

    ?

    方法2:查找索引

    find第一个s[i]对应的字母出现的位置和最后一个s[i]对应的字母出现的位置,如果这两个位置索引相同,则该字母只出现过一次。

    class Solution {
    public:
        int firstUniqChar(string s) {
            for(int i = 0; i<s.size(); i++){
                if(s.find_first_of(s[i])==s.find_last_of(s[i])) return i;
            }
            return -1;
    
        }
    };
    
    作者:hipeppa
    链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string/solution/jian-dan-yi-dong-he-findfang-fa-xiang-tong-by-hipe/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    ?

    cs