码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Ransom Note

时间:2016-08-14 23:59:29      阅读:277      评论:0      收藏:0      [点我收藏+]

标签:

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.

[LeetCode] Ransom Note

标签:

原文地址:http://www.cnblogs.com/jcliBlogger/p/5771151.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!