【发布时间】:2018-10-18 18:48:30
【问题描述】:
我想做一个函数,只要输入中提供的两个数字由相同的数字组成(没有替换),它就会返回 true。
例如,543 和 435 应该返回 true,10001 和 11000 应该返回 true,但 111222 和 122222 应该返回 false。
我读过一些关于位掩码的文章,但不太明白,你能帮帮我吗?
【问题讨论】:
-
您可以计算每个数字在数字中出现的次数,或者您可以尝试对数字进行排序,然后比较值。
-
如果您使用
x % 10,它会为您提供底部数字。如果您使用x / 10,它将删除底部数字。然后,您可以对每个数字中的数字进行计数或排序并进行比较。 -
将数字转换为 std::string 并使用 std::map
或只是一个 int 数组[10]; -
"我读过一些关于位掩码的文章,但并不真正明白" 这不是位掩码的用例。它们用于完全不同的目的。你做了什么尝试?可以将数字拆分为数字,将它们放入
std::map,然后比较地图。 -
我投票决定将此问题作为题外话结束,因为没有尝试解决该问题。没有写出对未来用户没有帮助的答案,我们只能发表评论。
标签: c++ numbers compare digits