LeetCode_宝石与石头问题

本质: B中有哪些A中的元素, 中各有几个

 

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。

J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3

//思路: 因为只包含字母, 所以开辟一个52长度的辅助数组,用以记录每一个字母在s中存在的个数 0-25为小写字母, 26-51为大写字母.
// 在ACSII表中'A'从65开始, 'a'从97开始, 处理一下对应数组下标0-51;
// 当char > 'a'; index = char - 'a'; 否则就是大写字母 index = char - 'A' + 26;
class Solution { public int numJewelsInStones(String J, String S) { int Num = 0; char[] jc = J.toCharArray(); char[] sc = S.toCharArray(); int[] aux = new int[52]; for (char c : sc) { if (c >= 'a') { aux[c-'a']++; } else { aux[c-'A'+26]++; } } for (char c : jc) { if (c >= 'a') { Num = Num + aux[c-'a']; } else { Num = Num + aux[c-'A'+26]; } } return Num; } }

 

posted @ 2019-05-16 14:18  Noino  阅读(154)  评论(0编辑  收藏  举报