【问题标题】:How to determine whether the same digits appear in two integers? [closed]如何判断两个整数中是否出现相同的数字? [关闭]
【发布时间】:2021-07-10 23:29:32
【问题描述】:

我需要做一个函数来确定相同的数字是否出现在两个整数中。不要考虑数字中数字出现的频率或顺序。

这些数字不一定具有相同的位数。例如,如果数字是 998 和 89,则函数应该返回 True。部分解决了,但如果长度不同,我不知道如何计算。

def same_digits(a: int, b: int)->bool:

    if (a == b):
        return True
    else:
        return False

【问题讨论】:

  • 将数字转换为字符串,然后将字符串转换为数字集。如果集合相等,则返回 True。
  • " 但是长度不一样就不知道怎么算了。"你知道如何确定长度吗?你知道如何检查两个值是否不同吗?究竟是什么难度?
  • 无论如何,您似乎误解了这个问题。因为它明确告诉您“不要考虑数字中数字出现的频率或顺序。”,您应该为99889 返回True 结果即使 它们的长度不同。
  • Karl 你说得对,这就是即使长度不同也要返回 TRUE 的想法。

标签: python python-3.x


【解决方案1】:

您可以将两个整数转换为一个列表并比较两个列表。

int1 = 98
int2 = 998

if list(str(int1)) in list(str(int2)):
    print(True)
else:
    print(False)


>>>True

【讨论】:

  • 请再次检查您的逻辑
【解决方案2】:

要检查每个数字,您需要将这些数字转换为string-object,然后 从产生0 or some finite number的其他数字中计算每个数字,然后使用all,我们可以检查所有数字是否存在。

查看此代码:

def same_digits(a: int, b: int)->bool:
    cond1 = all([str(b).count(i) for i in str(a)])
    cond2 = all([str(a).count(i) for i in str(b)])

    if cond1 and cond2:
        return True
    else:
        return False

print(same_digits(998, 892))

输出:

False

方法-2

为此目的使用set 操作和sorting

def same_digits(a: int, b: int)->bool:
    if sorted(set(str(a))) ==  sorted(set(str(a))):
        return True
    return False


print(same_digits(998, 89))

【讨论】:

  • 请不要为他们做作业。
  • 当客!很有用!
  • 别听他们的 Exploore X,这不是一项任务,而是来自挑战页面的学习如何编程的任务,我被卡住了,我只是在学习我不像他们那样完美。你是最棒的。 :)
猜你喜欢
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-14
相关资源
最近更新 更多