zoukankan      html  css  js  c++  java
  • [LeetCode] Ransom Note

    A very typical application of hash maps. Since I am now learning Java, I code in Java. The following code uses toCharArray() and getOrDefault(), which are learnt from this post.

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

    This code takes about 60ms.

    In fact, arrays can be used to replace hash maps since the test cases of this problem only contan the 26 English letters. A array-version solution can be found here and is rewritten below.

    public class Solution {
        public boolean canConstruct(String ransomNote, String magazine) {
            int[] map = new int[26];
            for (char k : magazine.toCharArray())
                map[k - 'a']++;
            for (char k : ransomNote.toCharArray()) {
                int v = --map[k - 'a'];
                if (v < 0) return false;
            }
            return true;
        }
    }

    This version is much faster, about 13ms.

  • 相关阅读:
    Linux 常用命令总结(二)
    Linux(CentOS7)使用 RPM 安装 mysql 8.0.11
    Linux(CentOS7) 相关软件安装
    8、js——字符串
    7、js——数组
    6、js——创建对象方式
    5、js——this说明
    4、js——函数
    4、js——对象
    2、js编写位置
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/5771151.html
Copyright © 2011-2022 走看看