如何判断数字B的所有数位均存在于数字A中?现有实现存在错误
问题:判断B的所有数位是否都存在于A中时逻辑错误
我需要实现一个判断逻辑:给定两个数字A和B,如果B的每一位数字都能在A的数位中找到,返回true,否则返回false。
但我写的代码完全没实现这个逻辑,当B包含A里没有的数字时,还是会返回true,比如测试用例里的A=1111、B=112的情况。
我的代码:
if (A >= B) return true else return false
测试用例
- 测试用例1(符合预期):
A = 98765,B = 8759
代码返回:True,实际符合预期(B的所有数位都在A中) - 测试用例2(符合预期):
A = 154,B = 154
代码返回:True,实际符合预期 - 测试用例3(符合预期):
A = 875,B = 8756
代码返回:False,实际符合预期(B包含A没有的数字6) - 测试用例4(不符合预期):
A = 1111,B = 112
代码返回:True,预期返回:False(A中没有数字2)
解决方案
你当前的代码逻辑是比较A和B的数值大小,这和需求完全不相关,自然会出错。正确的思路应该是提取A的所有数位并去重,然后逐一检查B的每一位是否都在这个集合里。
以Python为例,实现代码如下:
def check_digits(A, B): # 将A转为字符串,提取所有数位并转成集合(自动去重) a_digit_set = set(str(A)) # 遍历B的每一位数字 for digit in str(B): if digit not in a_digit_set: return False return True
测试验证:
check_digits(1111, 112)→ 返回False,符合预期check_digits(98765, 8759)→ 返回True,符合预期check_digits(875, 8756)→ 返回False,符合预期
核心逻辑是利用集合的快速查找特性,只关注数位本身,完全不依赖A和B的数值大小关系。
内容的提问来源于stack exchange,提问作者deftins12
相关产品推荐
相关产品推荐

