Java 中的逆序和加法函式
給定一個整數,我們的目標是反轉該數字的數字,並將反轉後的數字加到原始數字上,並檢查結果數字是否為迴文數,並重復此過程直到完成。該過程的斷點是 1000 次迭代和大於最大長整數值 (Long.MAX_VALUE) 的值。
例如
輸入 - 1678
輸出 - 給定輸入 1678 的迴文數 293392
解釋 - 首先反轉輸入數字,然後將其新增到原始數字中,然後檢查它是否為迴文數,如果它不是迴文數,則對更新後的數字重複相同的過程。該過程的斷點是 1000 次迭代和大於最大長整數值 (Long.MAX_VALUE) 的值。
輸入 - 202021038
輸出 - 給定輸入 202021038 的迴文數 1453553541
解釋 - 首先反轉輸入數字,然後將其新增到原始數字中,然後檢查它是否為迴文數,如果它不是迴文數,則對更新後的數字重複相同的過程。該過程的斷點是 1000 次迭代和大於最大長整數值 (Long.MAX_VALUE) 的值。
下面程式中使用的方案如下
在 main 函式內部
輸入數字傳遞給方法 calculateReverseandAdd(input)
在方法 calculateReverseandAdd 內部
引入一個新的變數 rev_number
迴圈迭代的條件是 number <= max
在迴圈內部,透過將數字傳遞給方法 reverseNumber() 獲取數字的反轉。
然後將反轉後的數字加到輸入數字上。
然後透過將數字傳遞給方法 checkPalindrome() 檢查獲得的數字是否為迴文數,如果是,則將數字作為輸出列印給使用者。
如果數字不是迴文數,則使用獲得的數字重複相同的過程,直到獲得迴文數,如果結果數字大於最大長整數值,則給定數字範圍內不存在可能的迴文數。
示例
import java.util.*; public class ReverseAdd{ static final long max = Long.MAX_VALUE; static long reverseNumber(long number){ long rev_number = 0; while (number > 0){ rev_number = rev_number * 10 + number % 10; number = number / 10; } return rev_number; } static boolean checkPalindrome(long number){ return (reverseNumber(number) == number); } static void calculateReverseandAdd(long number){ long rev_number = 0; System.out.println("Palindrome of the given input " + number); while (number <= max){ rev_number = reverseNumber(number); number = number + rev_number; if (checkPalindrome(number)){ System.out.println(number); break; } else if (number > max){ System.out.println("No possible palindromes for the input"); } } } public static void main(String[] args){ calculateReverseandAdd(1678); calculateReverseandAdd(2961); calculateReverseandAdd(202021038); } }
輸出
如果我們執行以上程式碼,它將生成以下輸出
Palindrome of the given input 1678 293392 Palindrome of the given input 2961 69696 Palindrome of the given input 202021038 1453553541
廣告