最大回文乘积

Posted superlizhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大回文乘积相关的知识,希望对你有一定的参考价值。

题目

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

以上是关于最大回文乘积的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 479.最大回文数乘积

479 Largest Palindrome Product 最大回文数乘积

LeetCode 479 最大回文数乘积[暴力 枚举] HERODING的LeetCode之路

使用两种方法来解决“最大回文数乘积”问题

使用两种方法来解决“最大回文数乘积”问题

[LeetCode] Largest Palindrome Product 最大回文串乘积