用 JavaScript 查詢由兩個 n 位數的乘積生成的最大的迴文數


在給定的問題陳述中,我們必須藉助 Javascript 功能找到由兩個 n 位數的乘積生成的最大的迴文數。因此,我們將建立兩個函式來完成此任務。第一個函式是查詢最大的迴文數,第二個函式是檢查該數是否是迴文數。

什麼是迴文數?

在給定的問題陳述中使用了“迴文”一詞!!讓我們首先了解這個詞的意思。迴文是指當我們必須定義一個字串或數字時使用的術語,該字串或數字在反轉後看起來相同。例如,我們有像 44、121、202、404、909 這樣的數字,如果我們反轉這些數字,反轉後——44、121、202、404、909,它看起來與輸入字串相似。因此,這被稱為迴文。

理解問題

眼前的問題是利用 Javascript 找到最大的迴文數。我們的主要任務是找到最大的迴文數,它應該是兩個 n 位數的乘積。

給定問題的邏輯

為了解決這個問題,我們將迭代所有可能的 n 位數組合。因此,我們將從最大的可能的數字開始。然後,我們將計算每一對的乘積,並檢查該數是否是迴文數。如果該數是迴文數,我們將將其與到目前為止找到的最大回文數進行比較。我們將更新其值。因此,我們將使用巢狀迴圈和另一個函式來檢查迴文。

演算法

步驟 1:由於我們必須找到最大的迴文數,它應該是兩位數的乘積。因此,為了完成此任務,我們將定義兩個函式。第一個函式將查詢最大的迴文乘積,第二個函式將查詢該數是否是迴文數。第一個函式將接受一個引數 n,它是兩個因子的位數。第二個函式將接受一個引數,即我們要檢查其是否是迴文數的數字。

步驟 2:第一個函式將初始化最大的 n 位數 maxNum 和最小的 n 位數 minNum。

步驟 3:定義變數後,我們將使用一個迴圈遍歷從 maxNum 到 minNum 的數字,並且我們還將藉助巢狀迴圈檢查它們的乘積。

步驟 4:在此步驟中,如果我們找到了迴文乘積,並且它大於當前的最大回文數,我們將將其更新為 largestPalindrome 變數。

步驟 5:在此函式的最後一步,我們將獲得最大的迴文數。

步驟 6:在第二個函式中,首先我們將給定的數字轉換為字串,然後我們將比較字串開頭和結尾處的字元。

步驟 7:如果字串的字元不匹配,我們將返回值為 false,這表明該數不是迴文數。如果所有字元都匹配,我們將返回值為 true,這表明該數是迴文數。

示例

//Function to find the largest palindrome product
function largestPalindromeProduct(n) {
   const maxNum = Math.pow(10, n) - 1;
   const minNum = Math.pow(10, n - 1);
   let largestPalindrome = 0;

   for (let i = maxNum; i >= minNum; i--) {
      for (let j = i; j >= minNum; j--) {
         const product = i * j;
         if (isPalindrome(product) && product > largestPalindrome) {
            largestPalindrome = product;
            break;
         }
      }
   }

   return largestPalindrome;
}

//Function to check that the number is palindrome
function isPalindrome(num) {
   const str = num.toString();
   const len = str.length;

   for (let i = 0; i < Math.floor(len / 2); i++) {
      if (str[i] !== str[len - 1 - i]) {
         return false;
      }
   }

   return true;
}

const n = 3;
const n1 = 2;
const largestPalindrome = largestPalindromeProduct(n);
const largestPalindrome1 = largestPalindromeProduct(n1);
console.log(`The largest palindrome made from the product of two ${n}-
digit numbers is: ${largestPalindrome}`);
console.log(`The largest palindrome made from the product of two ${n1}-
digit numbers is: ${largestPalindrome1}`);

輸出

The largest palindrome made from the 
product of two 3-digit numbers is: 906609
The largest palindrome made from the product of two 
2-digit numbers is: 9009

複雜度

由兩個 n 位數的乘積構成的最大回文數的時間複雜度為 O(n^2),其中 n 是迴圈中完成的迭代次數。複雜度的原因為我們使用了巢狀迴圈。

結論

在我們提供的程式碼中,有效地解決了由兩個 n 位數的乘積生成的查詢最大回文數的問題。我們已經迭代了所有可能的 n 位數對,並跟蹤最大的迴文數,因此程式碼得到了預期的結果。我們使用了巢狀迴圈和一個輔助函式來檢查該數是否是迴文數。

更新於:2023年8月14日

234 次瀏覽

開啟您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.