剑指offer 51. 字符串中第一个只出现一次的字符

简介: 剑指offer 51. 字符串中第一个只出现一次的字符

题目描述

在字符串中找出第一个只出现一次的字符。

如输入"abaccdeff",则输出b

如果字符串中不存在只出现一次的字符,返回 # 字符。


数据范围

输入字符串长度 [0,1000]。

样例:

输入:"abaccdeff"
输出:'b'



方法一:哈希表 O(n)

利用哈希表快速查找性质,可以找到对应元素。步骤如下:


  1. 先遍历一遍所有字符,用哈希表存下每个字符出现了多少次。
  2. 然后再遍历一遍所有字符,去查询该字符在哈希表中出现的次数。如果能找到 hash[i] == 1 即只出现了一次的字符,就输出该字符。
  3. 如果没有找到只出现一次的字符,就返回 #
class Solution {
public:
    char firstNotRepeatingChar(string s) {
        map<char, int>  hash;
        for (auto i : s)   hash[i]++;
        for (auto i : s)
            if (hash[i] == 1)
                return i;
        return '#';
    }
};


欢迎大家在评论区交流~

目录
相关文章
|
存储
第一个只出现一次的字符(OJ题)
第一个只出现一次的字符(OJ题)
55 0
|
索引
【LeetCode】917. 仅仅反转字母、387. 字符串中的第一个唯一字符
目录 917. 仅仅反转字母 387. 字符串中的第一个唯一字符
48 0
|
6月前
|
存储 索引
LeetCode 387. 字符串中的第一个唯一字符
LeetCode 387. 字符串中的第一个唯一字符
38 0
|
6月前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
6月前
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
6月前
|
算法
leetcode:387. 字符串中的第一个唯一字符
leetcode:387. 字符串中的第一个唯一字符
27 0
|
6月前
|
Java Go
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
61 0
每日一题《剑指offer》字符串篇之字符流中第一个不重复的字符
|
6月前
|
机器人 Java
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
70 0
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
|
6月前
|
C++ 索引
字符串中的第一个唯一字符(C++)
字符串中的第一个唯一字符(C++)
60 0
|
6月前
|
索引
leetcode-438:找到字符串中所有字母异位词
leetcode-438:找到字符串中所有字母异位词
39 0