一个只出现一次的字符

Posted heaven夏

tags:

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

题目:

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

示例:

s = "abaccdeff"
返回 "b"

s = ""
返回 " "
 

限制:

0 <= s 的长度 <= 50000

 

 

解答:
暴力方式,对每个字符,比较后面是否存在相同的,复杂度O(N^2);采用哈希表方式,使用LinkedHashMap可以在返回的时候降低遍历成本;

 1 class Solution {
 2     public char firstUniqChar(String s) {
 3         if(s.length() == 0 || s == null){
 4             return ‘ ‘;
 5         }
 6         Map<Character, Boolean> map = new LinkedHashMap<>();
 7         for(Character ch : s.toCharArray()){
 8             if(map.containsKey(ch)){
 9                 map.put(ch, false);
10             }else{
11                 map.put(ch, true);
12             }
13         }
14         for(Map.Entry<Character, Boolean> entry : map.entrySet()){
15             if(entry.getValue()){
16                 return entry.getKey();
17             }
18         }
19         return ‘ ‘;
20     }
21 }

 

以上是关于一个只出现一次的字符的主要内容,如果未能解决你的问题,请参考以下文章

最强解析面试题:第一个只出现一次的字符

LeetCode 260 只出现一次的数字(超详细)

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

剑指offer第一个只出现一次的字符

第一个只出现一次的字符

第一个只出现一次的字符