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

题目

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

示例:

s = "abaccdeff"
返回 "b"

s = ""
返回 " "

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

用一个 hashmap 储存 s 中每个元素出现的次数。
但由于 hashmap 是无序的,所以再从头遍历 s,按顺序查找 s 中每一个元素出现的次数即可。

代码

Java

class Solution {
    public char firstUniqChar(String s) {
        char [] charArray = s.toCharArray();
        Map<Character,Integer> map = new HashMap<>();
        for (char c : charArray) {
            if(!map.containsKey(c)) {
                map.put(c , 1);
            } else {
                Integer number = map.get(c);
                map.put(c, number + 1);
            }
        }
        for (char c : charArray) {
            if (map.get(c) == 1) 
            return c;
        }
        return ' '; 
    }
}

C++

class Solution {
public:
    char firstUniqChar(string s) {
        if (s.empty()) {return ' ';}
        if (s.length() == 1) {return s[0];}

        unordered_map<char, int> store;
        unordered_map<char, int> ::const_iterator itr;

        for (int i = 0; i < s.length(); ++i) {
            ++store[s[i]];
        }

        for (char i : s) {
            itr = store.find(i);

            if (itr -> second == 1) {
                return i;
            }
        }

        return ' ';
    }
};


Python

class Solution:
    def firstUniqChar(self, s: str) -> str:
        dic = dict()
        for c in s:
            if c in dic:
                dic[c] += 1
            else:
                dic[c] = 1
        res = []
        for i in dic:
            if dic[i] == 1:
                res.append(i)
        if res == []:                
            return " "
        else:
            return res[0]

JS

var firstUniqChar = function(s) {
    if(!s) return " "
    let map = new Map()
    for(let c of s) {
        if(map.has(c)) {
            map.set(c, map.get(c) + 1)
        } else {
            map.set(c, 1)
        }
    }
    for(let c of map.keys()) {
        if(map.get(c) === 1) {
            return c
        }
    }

    return  " "
};
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容