码迷,mamicode.com
首页 > 其他好文 > 详细

最大回文乘积

时间:2020-01-17 11:33:08      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:while   应该   最大数   工具   lock   函数   fun   回文   从后往前   

题目

回文数就是从前往后和从后往前读都一样的数。由两个 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

最大回文乘积

标签:while   应该   最大数   工具   lock   函数   fun   回文   从后往前   

原文地址:https://www.cnblogs.com/superlizhao/p/12204765.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!