zoukankan      html  css  js  c++  java
  • 最大回文乘积

    题目

    回文数就是从前往后和从后往前读都一样的数。由两个 2 位数相乘得到的最大回文乘积是 9009 = 91 × 99。找出由两个 n 位数相乘得到的最大回文乘积。
    测试用例:
    largestPalindromeProduct(2)应该返回 9009
    largestPalindromeProduct(3)应该返回 906609。

    代码

      function largestPalindromeProduct(digit) {
        let min, max, i = 0, palindromeArr = [], largest = 0;
        //找出最小的digit位数min和最大的digit位数max
        while (i < digit) {
          if (i == 0) {
            min = 1;
            max = 9;
          } else {
            min *= 10;
            max = max * 10 + 9;
          }
          i++;
        }
        //由大到小,找出max->min里所有回文乘积
        for (let j = max; j >= min; j--) {
          for (let k = max; k >= min; k--) {
            if (isPalindrome(j * k)) {
              palindromeArr.push(j * k)
            }
          }
        }
        //找出palindromeArr里最大的数
        return findLargest(palindromeArr);
      }
      //工具函数:判断数字n是否为回文数字
      function isPalindrome(n) {
        let str = String(n);
        let str1 = str.split('').reverse().join('')
        if (str == str1)
          return str == str1;
      }
      //工具函数:找出数组arr中里的最大数largest
      function findLargest(arr) {
        let largest = 0;
        for (i of arr) {
          if (i > largest) {
            largest = i;
          }
        }
        return largest;
      }
      largestPalindromeProduct(3)//906609
    
  • 相关阅读:
    Python第二
    Python第一讲以及计算机基础
    MySQL第五讲
    MySQL第四讲
    MySQL第三讲
    MySQL第一讲概论
    MySQL日常笔记第二讲
    Linux修改用户组
    XAMPP中proftpd的简明配置方法
    解决php configure: error: Cannot find ldap libraries in /usr/lib.错误
  • 原文地址:https://www.cnblogs.com/superlizhao/p/12204765.html
Copyright © 2011-2022 走看看