【算法笔记】ch01_01_0771 宝石与石头

笔记介绍:

本项目是datawhale发布的LeetCode 算法笔记(Leetcode-Notes)课程完成笔记,根据推荐题目循序渐进练习算法题目。主要用python进行书写相关代码,会介绍解题思路及跑通解法。

0771. 宝石与石头

题目大意

描述:给定一个字符串 jewels 代表石头中宝石的类型,再给定一个字符串 stones 代表你拥有的石头。stones 中每个字符代表了一种你拥有的石头的类型。

要求:计算出拥有的石头中有多少是宝石。

说明

  • 字母区分大小写,因此 aA 是不同类型的石头。
  • 1 ≤ j e w e l s . l e n g t h , s t o n e s . l e n g t h ≤ 50 1 \le jewels.length, stones.length \le 50 1jewels.length,stones.length50
  • jewelsstones 仅由英文字母组成。
  • jewels 中的所有字符都是唯一的。

示例

  • 示例 1:

    输入:jewels = "aA", stones = "aAAbbbb"
    输出:3
    
  • 示例 2:

    输入:jewels = "z", stones = "ZZ"
    输出:0
    

解题思路

我们需要统计字符串 stones 中出现在字符串 jewels 中的字符数量。为了高效地进行统计,我们可以先将 jewels 字符串转换为一个集合 jewelsSet,这样我们可以在 O ( 1 ) O(1) O(1) 的时间复杂度内查询一个字符是否是宝石。然后遍历 stones 字符串,对于每个字符,如果它存在于 jewelsSet 中,就将计数器加一。

解题 Python 代码

def analysis(jewelsSet: list, stones: list):
    return sum(s in jewelsSet for s in stones)

def main():
    # 主要逻辑代码
    input_jewelsSet = list(input('请输入宝石字符集,以空格分隔:').split())
    input_stones = list(input('请输入拥有的石头字符集,以空格分隔:').split())
    print('拥有的宝石数量:', analysis(input_jewelsSet, input_stones))

if __name__ == "__main__":
    main()

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值