zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
  • 相关阅读:
    CSS基本
    Visual Basic相关图书推荐
    Docker相关图书推荐
    PASCAL相关图书推荐
    正则表达式相关图书推荐
    Go语言相关图书推荐
    F#相关图书推荐
    Ruby相关图书推荐
    PHP相关图书推荐
    Swift相关图书推荐
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075624.html
Copyright © 2011-2022 走看看