用 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 位數對,並跟蹤最大的迴文數,因此程式碼得到了預期的結果。我們使用了巢狀迴圈和一個輔助函式來檢查該數是否是迴文數。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP