LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路:

相关企业

  • 字节跳动

AC 代码

  • Java
// 解决方案(1)
class Solution 
    public char firstUniqChar(String s) 
        HashMap<Character, Boolean> dic = new HashMap<>();
        char[] sc = s.toCharArray();
        for(char c : sc)
            dic.put(c, !dic.containsKey(c));
        for(char c : sc)
            if(dic.get(c)) return c;
        return ' ';
    


// 解决方案(2)
class Solution 
    public char firstUniqChar(String s) 
        Map<Character, Boolean> dic = new LinkedHashMap<>();
        char[] sc = s.toCharArray();
        for(char c : sc)
            dic.put(c, !dic.containsKey(c));
        for(Map.Entry<Character, Boolean> d : dic.entrySet())
           if(d.getValue()) return d.getKey();
        
        return ' ';
    


// 解决方案(3)
class Solution 
    public char firstUniqChar(String s) 
        int[] cnt = new int[26];
        for (char c : s.toCharArray()) 
            cnt[c - 'a']++;
        
        for (int i = 0; i < s.length(); i++) 
            if (cnt[s.charAt(i) - 'a'] == 1) 
                return s.charAt(i);
            
        
        return ' ';
    
  • C++
// 解决方案(1)
class Solution 
public:
    char firstUniqChar(string s) 
        unordered_map<char, bool> dic;
        for(char c : s)
            dic[c] = dic.find(c) == dic.end();
        for(char c : s)
            if(dic[c]) return c;
        return ' ';
    
;

// 解决方案(2)
class Solution 
public:
    char firstUniqChar(string s) 
        vector<char> keys;
        unordered_map<char, bool> dic;
        for(char c : s) 
            if(dic.find(c) == dic.end())
                keys.push_back(c);
            dic[c] = dic.find(c) == dic.end();
        
        for(char c : keys) 
            if(dic[c]) return c;
        
        return ' ';
    
;

以上是关于LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 50. 第一个只出现一次的字符

LeetCode692. 前K个高频单词 / 剑指 Offer 50. 第一个只出现一次的字符 / 剑指 Offer 51. 数组中的逆序对 / 2. 两数相加

Leetcode刷题100天—剑指 Offer 50. 第一个只出现一次的字符(队列)—day13

剑指Offer 50 - 第一个只出现一次的字符

剑指 Offer 50. 第一个只出现一次的字符

剑指 Offer 50. 第一个只出现一次的字符