zoukankan      html  css  js  c++  java
  • May LeetCoding Challenge3 之 HashMap的使用

    Map是一种key-value映射表。不存在重复的key。

    经常用的方法有put(key,value),get(key),containsKey(key),可以通过for each遍历keyset(),entryset()。

    给map赋值的方法可以参考该语句:map.put(c, map.getOrDefault(c, 0)+1);

    本题提供两种解法:

    1.好理解的方法。遍历ransomNote的字符,找出字符在magazine的下标位置,如果下标为-1(即magazine不存在该字符),返回false;否则删除magazine中该字符。

    2.用HashMap存储字符和字符出现的次数。先将magazine存入map,然后再遍历ransomNote,减去字符出现的次数。如果次数小于0,返回false。

    JAVA

    class Solution {
        public boolean canConstruct(String ransomNote, String magazine) {
            for(char c: ransomNote.toCharArray()){
                int index = magazine.indexOf(c);
                if(index == -1) return false;
                magazine = magazine.substring(0, index) + magazine.substring(index+1);
            }
            return true;
        }
    }
    class Solution {
        public boolean canConstruct(String ransomNote, String magazine) {
            Map<Character, Integer> map = new HashMap<>();
            for(char c: magazine.toCharArray()){
                map.put(c, map.getOrDefault(c, 0)+1);
            }
            for(char c: ransomNote.toCharArray()){
                map.put(c, map.getOrDefault(c, 0)-1);
                if(map.get(c) < 0) return false;
            }
            return true;
        }
    }

    Python3

    class Solution:
        def canConstruct(self, ransomNote: str, magazine: str) -> bool:
            for c in ransomNote:
                if c not in magazine:
                    return False
                index = magazine.index(c)
                magazine = magazine[0:index] + magazine[index+1:]
            return True
    class Solution:
        def canConstruct(self, ransomNote: str, magazine: str) -> bool:
            d = dict()
            for c in magazine:
                if c in d:
                    d[c] += 1
                else:
                    d[c] = 1
            for c in ransomNote:
                if c in d:
                    d[c] -= 1
                else:
                    d[c] = -1
                if d[c] < 0:
                    return False
            return True
  • 相关阅读:
    pytorch_基于cifar创建自己的数据集并训练
    Pytorch_3.8_多层感知机
    Pytorch_3.6_ SOFTMAX回归的从零实现
    Linux(debian)下的Python程序守护进程
    Ubuntu16.04安装OpenCV3.4.3
    Beaglebone black 安装docker
    电脑与虚拟机ping
    Beaglebone升级Python3.7过程
    多图上传预览
    放大镜代码
  • 原文地址:https://www.cnblogs.com/yawenw/p/12827736.html
Copyright © 2011-2022 走看看