萌新练习写代码的每日一练:宝石与石头

    科技2022-09-06  129

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

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

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

    思路:暴力解法,用循环遍历字符串S,如果J中出现了S中有的石头,count计数器+1

    代码:

    class Solution:

        def numJewelsInStones(self, J: str, S: str) -> int:

            count = 0

            for s in S:

                #print(s)

                if s in J:

                    #print(s)

                    count += 1

            return count

    学到的新思路:哈希表,先将J中的宝石用hash表存储,之后遍历S,判断S中的宝石是否存在于hash表内,存在count计数器+1,不存在则不处理

    代码:

    class Solution: def numJewelsInStones(self, J: str, S: str) -> int: dic = {} for j in J: if j in dic: dic[j] += 1 else: dic[j] = 1 # return dic count = 0 for s in S: if s in dic: count += 1 return count

    题目来自LeetCode771

    Processed: 0.013, SQL: 12