给定一个数字,返回具有非重复数字的数字的数量,直到该数字从1开始。
测试案例1:
示例输入
size_t
示例输出
7
测试案例2:
示例输入
7
示例输出
3456
我会写程序,但我不知道问题陈述是什么,因为样本输入测试用例让我感到困惑。
答案 0 :(得分:3)
问题 是不明确的,因为有两种合理的解释方式"重复数字"。
首先,一个数字有一个"重复的数字"如果它连续两次或更多次具有相同的数字。例如,12334有一个重复的数字(3)。
其次,如果相同的数字出现两次,则数字会有重复的数字。所以1231在第一种意义上不会有重复的数字,但在这个意义上(1重复)。
通过检查他们给出的测试用例,我们可以找到正确的含义。
def nonrep1(n):
return sum(all(c != d for c, d in zip(str(i), str(i)[1:])) for i in xrange(1, n+1))
def nonrep2(n):
return sum(all(str(i).count(d) < 2 for d in '0123456789') for i in xrange(1, n+1))
assert nonrep1(7) == 7
assert nonrep1(3456) == 2562
assert nonrep2(7) == 7
assert nonrep2(3456) == 2562
最后的断言失败了,所以&#34;非重复的第一个含义&#34;是问题制定者想要的那个。
我编写了程序略显愚蠢的简洁版本,因此您现在仍然可以编写自己的代码,以便了解问题所在。
答案 1 :(得分:1)
问题是给定一个数字N.找出从1到N有多少个数字,它们没有重复的数字。
在第一种情况下,有7个数字从1到7不具有重复数字。
在第二种情况下,从1到3456的2562个数字没有重复数字。