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

递归检查两个unsigned long long数字公共数位的问题求助

问题分析

你的代码现在只对比两个数相同位置的数位(比如个位和个位、十位和十位),但这不符合“公共数位”的要求——公共数位是指某个数字同时出现在两个数的任意位置,而非必须在同一位置。

举个典型反例:如果测试用例是n1=1234、n2=356,你的代码会依次对比4和6、3和5、2和3、1和0,最终返回-1,但实际上3是两个数的公共数位,这就是第二个测试用例失败的核心原因。

另外,你的代码在处理含0的情况时也有漏洞:如果其中一个数是0,另一个数包含0(比如n1=0、n2=50),你的代码会直接返回-1,但实际上0是合法的公共数位。

修正提示
  1. 先实现一个辅助逻辑:判断某个0-9的数字是否存在于给定的unsigned long long数中。可以用循环取每一位对比的方式实现,注意处理数字本身就是0的情况。
  2. 调整递归逻辑:
    • 每次取出第一个数的最后一位,用辅助逻辑检查这个数位是否在第二个数中存在。如果存在,直接返回该数位。
    • 如果不存在,递归处理第一个数去掉最后一位后的结果(第二个数保持不变),继续检查下一位。
    • 当第一个数被遍历完(n1 == 0),说明第一个数的所有数位都不在第二个数中,直接返回-1即可。
  3. 修正0的判断逻辑:不要在开头直接返回-1,而是结合辅助逻辑判断0是否是公共数位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 07:35:24