LeetCode 771 宝石与石头

LeetCode 771 宝石与石头

问题描述:
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

哈希表
使用数组代替哈希表对各个字符的数量进行统计

执行用时:1 ms, 在所有 Java 提交中击败了99.67%的用户
内存消耗:37.2 MB, 在所有 Java 提交中击败了60.91%的用户

class Solution {
    public int numJewelsInStones(String J, String S) {
        if(J==null || J.length()==0 || S==null || S.length()==0) {
            return 0;
        }
        
        char[] map = new char[52];
        for(char ch: S.toCharArray()) {
            if(ch-'a'>25 || ch-'a'<0) {
                map[ch-'A'+26]++;
            }
            else {
                map[ch-'a']++;
            }
        }

        int ans = 0;
        for(char ch: J.toCharArray()) {
            if(ch-'a'>25 || ch-'a'<0) {
                ans += map[ch-'A'+26];
            }
            else {
                ans += map[ch-'a'];
            }
        }

        return ans;
    }
}
posted @ 2020-10-03 15:25  CodeSPA  阅读(79)  评论(0编辑  收藏  举报