本文共 1253 字,大约阅读时间需要 4 分钟。
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 .
public class Solution { public boolean canConstruct(String ransomNote, String magazine) { HashMapmap = 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 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.
转载地址:http://ncpdx.baihongyu.com/