在Java中没有前导零的十进制表示

时间:2016-12-17 15:27:59

标签: java math

对于没有Java中非负整数的前导零的十进制表示,我有点困惑吗? 我读了一个例子,其中1213(整数值)被回答为1213(十进制没有前导零)。

有人可以解释一下吗?

2 个答案:

答案 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

这是一个不同的问题。您需要生成所有组合。如果您不能有前导零,请跳过所有以零开头的解决方案。