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


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

    思路就是建立一个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类

  • 相关阅读:
    Java并发编程之volatile变量
    mysql以下c连接mysql数据库
    2014年工作中遇到的20个问题:61-80
    2014年工作中遇到的20个问题:61-80
    雷观(一):我的职业发展路线之一
    雷观(一):我的职业发展路线之一
    CentOS下安装和配置MySQL-JDK-Tomcat-Nginx(个人官网环境搭建手册)
    雷观(序)
    雷观(序)
    ITFriend创业阶段的服务器环境搭建手册
  • 原文地址:https://www.cnblogs.com/take-it-easy/p/13190350.html
Copyright © 2020-2023  润新知