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

Python不使用列表统计两个字符串共有唯一数字个数的实现方法

函数实现指引与代码

实现思路

  • 核心需求为统计两个输入字符串中共同存在的唯一数字总数,要求不使用列表完成
  • 可选两种合规实现方案:
    1. 集合方案:集合天然支持元素去重、交集计算,全程无列表操作,代码最简洁
    2. 位运算方案:数字仅0~9共10种取值,用整数二进制位标记对应数字是否存在,全程无容器操作,兼容性更强

完整实现代码

集合实现版本

def uniqueDigitsFound(secretString, guess):
    """
    Return the number of digits that are contained in both the secretString
    and the guess. For example when secretString is 12345 and guess is 67821,
    the two strings, share two digits: 1 and 2.
    uniqueDigitsFound("12345", "67890")  returns 0
    uniqueDigitsFound("12345", "21435") returns 5
    """
    # Make sub to not contain duplicates in guess so
    # guess only has unique digits, and length of 1 to 5
    return len(set(secretString) & set(guess))


# Test uniqueDigitsFound.
assert(uniqueDigitsFound("12345", "44444") == 1)
assert(uniqueDigitsFound("12345", "44424") == 2)
assert(uniqueDigitsFound("12345", "00000") == 0)
assert(uniqueDigitsFound("12345", "00100") == 1)
assert(uniqueDigitsFound("12345", "01050") == 2)
assert(uniqueDigitsFound("12345", "01350") == 3)
assert(uniqueDigitsFound("12345", "21350") == 4)
assert(uniqueDigitsFound("12345", "21354") == 5)

位运算实现版本(无任何容器依赖)

def uniqueDigitsFound(secretString, guess):
    """
    Return the number of digits that are contained in both the secretString
    and the guess. For example when secretString is 12345 and guess is 67821,
    the two strings, share two digits: 1 and 2.
    uniqueDigitsFound("12345", "67890")  returns 0
    uniqueDigitsFound("12345", "21435") returns 5
    """
    # Make sub to not contain duplicates in guess so
    # guess only has unique digits, and length of 1 to 5
    secret_mask = 0
    for c in secretString:
        secret_mask |= 1 << int(c)
    guess_mask = 0
    for c in guess:
        guess_mask |= 1 << int(c)
    return bin(secret_mask & guess_mask).count('1')


# Test uniqueDigitsFound.
assert(uniqueDigitsFound("12345", "44444") == 1)
assert(uniqueDigitsFound("12345", "44424") == 2)
assert(uniqueDigitsFound("12345", "00000") == 0)
assert(uniqueDigitsFound("12345", "00100") == 1)
assert(uniqueDigitsFound("12345", "01050") == 2)
assert(uniqueDigitsFound("12345", "01350") == 3)
assert(uniqueDigitsFound("12345", "21350") == 4)
assert(uniqueDigitsFound("12345", "21354") == 5)

两种实现均可通过所有给出的测试用例,完全符合不使用列表的要求。

内容的提问来源于stack exchange,提问作者Jorge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:27:04