前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode-面试题50-第一次只出现一次的字符

LeetCode-面试题50-第一次只出现一次的字符

作者头像
benym
发布2022-07-14 15:28:17
1780
发布2022-07-14 15:28:17
举报
文章被收录于专栏:后端知识体系

# LeetCode-面试题50-第一次只出现一次的字符

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

示例1:

代码语言:javascript
复制
s = "abaccdeff"
返回 "b"

s = "" 
返回 " "

说明:

0 <= s 的长度 <= 50000

# 解题思路

哈希表:

每出现一次字符就把字符放入hash表中,如果有重复的就把对应位置+1

遍历的时候由于hash表重新put改变了原本的先后顺序(Java的hashmap不能原地改变,Python的dict可以原地改变),所以需要按照字符顺序遍历,当第1次value为1的时候,就返回该字符

# Java代码

代码语言:javascript
复制
class Solution {
    public char firstUniqChar(String s) {
        if (s == null || s.length() == 0)
            return ' ';
        HashMap<Character, Integer> maps = new HashMap<>();
        char[] chars = s.toCharArray();
        for (char c : chars) {
            if (!maps.containsKey(c)) {
                maps.put(c, 1);
            } else {
                maps.put(c, maps.get(c) + 1);
            }
        }

        for (char c : chars) {
            if (maps.get(c) == 1) {
                return c;
            }
        }
        return ' ';
    }
}

# Python代码1

代码语言:javascript
复制
class Solution:
    def firstUniqChar(self, s: str) -> str:
        if not s or len(s)==0:
            return ' '
        d = {}
        for i in s:
            if i not in d:
                d[i] = 1
            else:
                d[i]+=1
        for k,v in d.items():
            if v==1:
                return k
        return ' '
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # LeetCode-面试题50-第一次只出现一次的字符
    • # 解题思路
      • # Java代码
        • # Python代码1
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档