LeetCode | 479. Largest Palindrome Product 回文数

Find the largest palindrome made from the product of two n-digitnumbers.git

Since the result could be very large, you should return thelargest palindrome mod 1337.函数

Example:spa

Input: 2字符串

Output: 987string

Explanation: 99 x 91 = 9009, 9009 % 1337 = 987it

Note:io

The range of n is [1,8].for循环

题目要求你求出两个长度为n的数相乘获得的最大的回文数,这题的主要知识点有:class

一个长度为(2n)的数只可能由两个(n+1)的数和(n)的数相乘获得,或者是(n)的数和(n)的数相乘,不多是由(n+1)和(n+1)相乘,也不多是由n和(n-1)相乘,循环

之后在作题的时候须要记得换一个角度思考,好比这题,要你求最大的回文数你除了能够乘数从小到大遍历,也能够从大到小遍历回文数,知道找到最大的回文数,判断回文数是否可以由两个长度为N的数相乘获得,一个for循环就行了

如何将字符串反转有三种方法,一种是使用string头文件的strrev函数,不过只能对c风格的字符串使用,一种是reverse,这个是algorithm头文件的一个函数,也可以反转,还有最后一种就是本身写一个反转的函数

class Solution {

public:

long longreverse(int num)

{

      long long result=num;

      while (num != 0)

      {

            result = result * 10 + num % 10;

            num /= 10;

      }

      return result;

}

intlargestPalindrome(int n) {

      if (n == 1) return 9;

      long long temp=-1;

      int upper = pow(10, n)-1;

 

      for (int i = upper; i > upper / 10;i--)

      {

            temp = reverse(i);

            for (int j = upper; j > upper /10; j--)

            {

                  if (temp / j > j) break;

                  if (temp%j == 0)

                       goto theEnd;

            }

      }

   theEnd:;

      return temp % 1337;

}

};