JAVA - 最小的基地

时间:2015-08-28 15:15:02

标签: java base

嘿伙计们有另一个问题,只是想知道用什么方法来找到最小的可能基数"。努力工作:

如果我的数字是10121,那么基数就是3.但我不知道如何在Java中实现这些,我是否可以获得一个获得此返回值的好方法的任何提示。如果需要更多信息,我会发布问题,如果我没有意义的话。感谢

编辑: 哇,这么多的downvotes,我要求解释如何在Java中获得基础,这就是为什么我还没有解决方案。

4 个答案:

答案 0 :(得分:2)

Java uses这些字符作为基数2到36中数字的数字:

String digits = "0123456789abcdefghijklmnopqrstuvwxyz";

您的任务是逐个字符地查看String value,并在数字字符串中找到该小写字符的位置。如果digits中没有该字符,则该值无法转换为数字。否则,角色将位于pos位置。找到最高pos,并返回maxPos+1作为答案。

例如,对于val = "DeadBeef",您应该获得字符'f'的位置,即15.添加一个给出16,意味着val是有效的十六进制数。 / p>

答案 1 :(得分:1)

base-x数字的所有数字都小于x

所以你的目标是获得最高数字并返回+1以获得尽可能少的基数。

在这种情况下

101211

最高位为2,因此最低位为3

char ch = '0';
for(int i = 0; i < str.length(); ++i)
 {
   char c = str.charAt(i);
   if(c > ch)
    ch = c;
 }
System.out.println(c - '0');

答案 2 :(得分:0)

只需循环显示单个数字。

找到最大的一个。

最小的基数是1 +最大数字。

例如,对于字符串1232332234212,最大数字 4 ,因此最小数字 5

对于字符串101000010001010001,最大数字 1 ,因此最小数字 2

如果您还需要处理字母,请将字母转换为数字A = 10,B = 11,依此类推。并应用相同的算法

答案 3 :(得分:0)

这样的事情可能会这样做 - 请注意,它不能为基数为64的数字提供正确的结果。

public static int getSmallestPossibleBase(String value) {
    int max = 0;
    for (char c : value.toCharArray()) {
        int type = Character.getType(c);
        switch (type) {
            case Character.DECIMAL_DIGIT_NUMBER:
                // Decimal digit.
                max = Math.max(max, c - '0');
                break;
            case Character.UPPERCASE_LETTER:
            case Character.LOWERCASE_LETTER:
                // Works for base 16 and 32/36.
                max = Math.max(max, Character.toLowerCase(c) - 'a' + 10);
                break;
            default:
                throw new IllegalArgumentException("Your argument is invalid");
        }
    }
    return max + 1;
}