209. First Unique Character in a String

描述

给出一个字符串,找出第一个只出现一次的字符。

样例

对于 "abaccdeff", 'b'为第一个只出现一次的字符.

思路

  1. 对于当前字符,和后面每个字符相比较,如果没发现重复字符,则当前字符即为题目解,但此做法时间复杂度为 O(n),会超时
  2. 定义一个数组或者哈希表来记录每个字符出现次数,找到出现次数为 1 的字母

代码

  1. 遍历两次
public class Solution {
    /**
     * @param str: str: the given string
     * @return: char: the first unique character in a given string
     */
    public char firstUniqChar(String str) {
        if (str == null) {
            return ' ';
        }
        
        int[] records = new int[256];
        for (int i = 0; i < str.length(); i++) {
            records[str.charAt(i) - 'a']++;
        }
        for (int i = 0; i < str.length(); i++) {
            if (records[str.charAt(i) - 'a'] == 1) {
                return str.charAt(i);
            }
        }
        
        return ' ';
    }
}
  1. 遍历一次
public class Solution {
    /**
     * @param str: str: the given string
     * @return: char: the first unique character in a given string
     */
    public char firstUniqChar(String str) {
        Map<Character, Integer> map = new LinkedHashMap<>();
        Set<Character> set = new HashSet<>();
        for (int i = 0; i < str.length(); i++) {
            if (set.contains(str.charAt(i))) {
                map.remove(str.charAt(i));
            } else {
                map.put(str.charAt(i), i);
                set.add(str.charAt(i));
            }
        }
        return map.size() == 0 ? ' ' : map.entrySet().iterator().next().getKey();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,310评论 1 44
  • 题目1:如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。写一个函数 isVisib...
    FLYSASA阅读 257评论 0 0
  • 近两天,天气越来越凉,周璞真的心也越来越乱,因为还有几天她就文理分班了,一向学习不好的她,不知道怎么办,她原来在...
    神灯阅读 269评论 0 0
  • 入冬以后,便不再那么忙了。 男人们到田里用锄头把禾苗头翻上来,在冬日下慢慢晒干,然后等天气好的时候把禾苗头堆成一个...
    淡水无鱼阅读 257评论 0 3