剑指offer50第一次只出现一次的字符

题目描述://在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
// 示例:
// s = "abaccdeff"
//返回 "b"
//s = ""
//返回 " "
// 限制:
// 0 <= s 的长度 <= 50000
// Related Topics 哈希表
解题思路:可以通过Hash表来解决,当hash表中已经存在该值时,存入值为fale,反正存入ture,这样遍历完字符串后,只出现一次的字符对应的值就为true,反之为fale,最后在遍历一次数组,由于遍历的字符串是有序的,当存在值为true时,直接返回的就是第一次出现一次的字符。
代码如下:

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public char firstUniqChar(String s) {
        HashMap<Character, Boolean> map = new HashMap<>();
        for(char m:s.toCharArray()){
            if (map.containsKey(m)){
                map.put(m,false);
            }else {
                map.put(m,true);
            }
        }
        for (char m:s.toCharArray()){
            if (map.get(m))return m;
        }
        return ' ';
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 11:29
已编辑
斯卡蒂味的鱼汤:知道你不会来数马,就不捞你😂最近数马疯狂扩招,招聘要求挺低的,你能力肯定够,应该就是因为太强了,知道你不会来才不捞你
投递腾讯云智研发等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务