首页 > 其他 > 详细

LeetCode 哈希表 387. 字符串中的第一个唯一字符(计数哈希表,字符串)

时间:2020-06-24 22:58:08      阅读:60      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

 啊,是较简单的一题呢。有一些操作再熟悉一下。

思路就是建立一个HashMap用于计数,然后再遍历就行。时间空间复杂度都是ON

自己写的代码如下:

class Solution {
    public int firstUniqChar(String s) {
        HashMap<Character,Integer> map=new HashMap<Character,Integer>();
        for(int i=0;i<s.length();i++)
        {
            if(map.containsKey((Character)s.charAt(i)))
            {
                map.put(s.charAt(i),map.get(s.charAt(i))+1);

            }
            else
            {
                map.put(s.charAt(i),1);
            }
        }
        for(int i=0;i<s.length();i++)
        {
            if(map.get(s.charAt(i))==1)
            {
                return i;
            }
            
        }
        return -1;
    }
}

官方给的答案如下:

class Solution {
    public int firstUniqChar(String s) {
        HashMap<Character, Integer> count = new HashMap<Character, Integer>();
        int n = s.length();
        // build hash map : character and how often it appears
        for (int i = 0; i < n; i++) {
            char c = s.charAt(i);
            count.put(c, count.getOrDefault(c, 0) + 1);
        }
        
        // find the index
        for (int i = 0; i < n; i++) {
            if (count.get(s.charAt(i)) == 1) 
                return i;
        }
        return -1;
    }
}

 

关于HashMap中几个点注意一下

map.getOrDefault(c,0)这个api很好用,查不到值的时候直接返回默认值,就不用再节外生枝搞个判断了。

map.constainsKey()这个api注意一下。

 

关于字符串几个点注意一下:

str.charAt(i) 直接以char类型返回索引处的字母

或者可以str.substring(i,i+1)

HashMap中放的是封装类:Character类

 

LeetCode 哈希表 387. 字符串中的第一个唯一字符(计数哈希表,字符串)

原文:https://www.cnblogs.com/take-it-easy/p/13190350.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!