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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP