• Java实现 LeetCode 479 最大回文数乘积


    479. 最大回文数乘积

    你需要找到由两个 n 位数的乘积组成的最大回文数。

    由于结果会很大,你只需返回最大回文数 mod 1337得到的结果。

    示例:

    输入: 2

    输出: 987

    解释: 99 x 91 = 9009, 9009 % 1337 = 987

    说明:

    n 的取值范围为 [1,8]。

    PS:

    举个例子:
    max = 99;
    从i= 98开始循环
    构造出回文数 rev = 9889
    对于 x = 99 ,rev不能整除,继续
    对于 x = 98 , 98 * 98 = 9604,小于rev,退出第二层循环
    ...
    ...
    直到i= 90
    构造出回文数9009
    
    class Solution {
          public int largestPalindrome(int n) {
            if(n == 1) return 9; 
            long max = (long)Math.pow(10,n) - 1; 
            for(long i = max - 1; i > max / 10; i--){ 
                String s1 = String.valueOf(i);
                long rev = Long.parseLong(s1 + new StringBuilder(s1).reverse().toString()); 
                for(long x = max; x * x >= rev; x --){
                    if(rev % x == 0) return (int)(rev % 1337);
                }
            }
            return -1;
        }
    }
    
  • 相关阅读:
    XML基础总结
    异常处理
    集合总结
    事件源与监听器
    JAVA中的GUI---swing 和awt
    docker搭建wordpress
    Jenkins--第四关_扩展
    docker 安装centos 7
    Jenkins_第五关_系统管理(1)
    Jenkins--第三关_Gitlab安装和配置(续)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946442.html
Copyright © 2020-2023  润新知