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
  • 相关阅读:
    中国气象局所有城市代码
    Android项目源码混淆问题解决方法
    跳转到系统默认的Home
    jsp四个属性范围的比较
    response内置对象学习
    jsp登陆程序实现
    request内置对象学习
    JavaBean的学习
    android编程中的琐碎知识点汇总(5)
    android编程中的琐碎知识点汇总(4)
  • 原文地址:https://www.cnblogs.com/yawenw/p/12827736.html
Copyright © 2011-2022 走看看