java - 1000位字符串,不使用数组求最大5位

标签 java string numbers digits charat

我知道我的代码可以更简单、更高效...我的代码应该获取最大的 5 位数字。它有效,但它只抓取 3 位数字,我需要修改什么来改变它?

public class thousandDigits {
    public static void main(String[] args) {
        int greatest = 0;
        String num = ("73167176531330624919225119674426574742355349194934"
                + "96983520312774506326239578318016984801869478851843"
                + "85861560789112949495459501737958331952853208805511"
                + "12540698747158523863050715693290963295227443043557"
                + "66896648950445244523161731856403098711121722383113"
                + "62229893423380308135336276614282806444486645238749"
                + "30358907296290491560440772390713810515859307960866"
                + "70172427121883998797908792274921901699720888093776"
                + "65727333001053367881220235421809751254540594752243"
                + "52584907711670556013604839586446706324415722155397"
                + "53697817977846174064955149290862569321978468622482"
                + "83972241375657056057490261407972968652414535100474"
                + "82166370484403199890008895243450658541227588666881"
                + "16427171479924442928230863465674813919123162824586"
                + "17866458359124566529476545682848912883142607690042"
                + "24219022671055626321111109370544217506941658960408"
                + "07198403850962455444362981230987879927244284909188"
                + "84580156166097919133875499200524063689912560717606"
                + "05886116467109405077541002256983155200055935729725"
                + "71636269561882670428252483600823257530420752963450");

        for (int n = 0; n < num.length() - 5; n++) {
            greatest = ((num.charAt(n)) + (num.charAt(n+1)) + (num.charAt(n+2)) + (num.charAt(n+3))
                    + (num.charAt(n+4)));
            if (greatest > n) {
                n = greatest;
            }
        }
        System.out.print(greatest);
    }
}

输出:

357

最佳答案

我想你想使用String.substring(int, int)迭代所有可能的 5 个字符子字符串,然后您可以使用 Math.max(int, int)更新greatest。类似的东西

int greatest = Integer.MIN_VALUE;
for (int i = 0; i < num.length() - 4; i++) {
    // int value = Integer.parseInt(num.substring(i, i + 5));
    int value = Integer.parseInt(String.valueOf(num.charAt(i))
                + num.charAt(1 + i) + num.charAt(2 + i) + num.charAt(3 + i)
                + num.charAt(4 + i));
    greatest = Math.max(greatest, value);
}
System.out.println(greatest);

我得到99890

关于java - 1000位字符串,不使用数组求最大5位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796016/

相关文章:

arrays - 写一个C函数,接受一个英文句子作为参数,返回句子中最长的单词

c# - 使用 C# 从字符串中提取最后一个单词

javascript - 将数字转换为十、百、千

java - Unicode block : get alphabet of every language [Java]

java - 是什么导致 Spark Kafka 连接器中出现 "unknown resolver null"?

java - JSF outputstylesheet 在 firefox 中不起作用?

java - 如何检测鼠标指针是否在对象的边界内?

python - len 和 str.splitlines() 的奇怪行为

c# - 找出两个可无余数整除的数

python - 为 Python 安装 Bigfloat