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
  • 相关阅读:
    js复习---工厂函数---构造函数的执行过程
    21年初的措不及防-------
    element ui checkbox实现多项全选反选功能
    vue 实现导航锚点联动
    this.$router.currentRoute 和 this.$route的 区别
    重置vue组件的data数据 this.$options.data()
    父组件中如何拿到引入的子组件里element-ui 的form表单ref对象
    线程笔记
    面向对象
    关于上传和下载的笔记
  • 原文地址:https://www.cnblogs.com/yawenw/p/12827736.html
Copyright © 2011-2022 走看看