You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:33:32