对于没有Java中非负整数的前导零的十进制表示,我有点困惑吗? 我读了一个例子,其中1213(整数值)被回答为1213(十进制没有前导零)。
有人可以解释一下吗?
答案 0 :(得分:1)
这只是“普通人”写下整数的方式。
十进制表示您的整数表示使用基数10.即0到9之间的数字。(相反,例如,八进制(基数为8),仅限您所在的位置使用0到7之间的数字。)如果您不熟悉这个概念,请阅读“positional notation”。
没有前导零意味着你不要在0以外的任何数字前放置一个无效的0
数字。例如,你写42
,不是042
,当然不是00042
。 “普通人”在写日期时(例如29.02.
)或时间(如01:07
)偶尔会使用前导零来对齐数字,但除此之外,它并不常见。 “计算机人员”通常更喜欢在带有前导零的列表中添加前缀,直到它们全部相同为止,因为然后按字母顺序对列表进行排序会产生与数字排序相同的顺序。
非否定只是意味着练习并不期望您处理负数。这不是一个要求;只是你可以做出的简化。
答案 1 :(得分:0)
它的小数,即使用数字0到9的基数10,并且没有前导零。
如果是16位二进制文件,前导零可能看起来像
00000101001010101
,如果通过重新排列数字可以相互获得它们的十进制表示(没有前导零),则两个数字N,M是相似的。所以,这里如果N = 210,则M = 012
简单的解决方案是对数字进行排序并进行比较。 O(N ln N)
更高级的解决方案是计算位数并比较O(N)。请注意,使用Java 8,您可以使用1-3行代码执行此操作。
问题是要找到N的所有可能值,其中M = 210
这是一个不同的问题。您需要生成所有组合。如果您不能有前导零,请跳过所有以零开头的解决方案。