Python中如何统计石头中符合宝石类型的字符数?(区分大小写)
解法:统计宝石数量
问题核心是统计stones中所有属于jewels的字符总数,且大小写敏感。你说得对,zip确实不适合这个场景——它是按索引将两个字符串的字符配对,没法实现我们需要的“遍历所有石头,判断是否是宝石”的逻辑。
下面是几种实用的Python实现方式:
方法1:直观循环计数
def numJewelsInStones(jewels: str, stones: str) -> int: count = 0 for stone in stones: if stone in jewels: count += 1 return count
遍历每个石头字符,判断是否在宝石列表中,符合条件则计数加一,逻辑清晰易懂。
方法2:生成器表达式+sum(简洁版)
def numJewelsInStones(jewels: str, stones: str) -> int: return sum(1 for stone in stones if stone in jewels)
用生成器表达式为每个符合条件的石头生成数值1,再通过sum直接累加得到总数,代码更简洁。
方法3:集合优化查询效率
def numJewelsInStones(jewels: str, stones: str) -> int: jewel_set = set(jewels) return sum(1 for stone in stones if stone in jewel_set)
将jewels转换为集合后,判断字符是否存在的操作时间复杂度从O(n)降到O(1),当jewels长度较大时,能显著提升效率。
验证示例
- 示例1:
jewels = "aA",stones = "aAAbbbb",符合条件的字符为a、A、A,返回3,结果正确。 - 示例2:
jewels = "z",stones = "ZZ",无符合条件的字符,返回0,结果正确。
内容的提问来源于stack exchange,提问作者myomin htet
相关产品推荐
相关产品推荐

