เราได้รับเป็นจำนวนเต็มและวาระที่นี่คือการกลับหลักของตัวเลขและเพิ่มตัวเลขที่กลับด้านกับตัวเลขเดิมและตรวจสอบว่าตัวเลขผลลัพธ์เป็น palindrome หรือไม่และ กระบวนการนี้จะทำซ้ำจนกว่าจะเกิดขึ้น จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)
ตัวอย่าง
ป้อนข้อมูล − 1678
ผลผลิต − Palindrome ของอินพุตที่กำหนด 1678 293392
คำอธิบาย − หมายเลขอินพุตจะถูกกลับรายการก่อนแล้วจึงเพิ่มลงในหมายเลขเดิม จากนั้นจึงตรวจสอบหา palindrome หากไม่ใช่ palindrome กระบวนการเดียวกันจะทำซ้ำกับหมายเลขที่อัปเดต จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)
ป้อนข้อมูล − 202021038
ผลผลิต − Palindrome ของอินพุตที่กำหนด 202021038 1453553541
คำอธิบาย − หมายเลขอินพุตจะถูกกลับรายการก่อนแล้วจึงเพิ่มลงในหมายเลขเดิม จากนั้นจึงตรวจสอบหา palindrome หากไม่ใช่ palindrome กระบวนการเดียวกันจะทำซ้ำกับหมายเลขที่อัปเดต จุดแตกหักของกระบวนการคือการวนซ้ำ 1,000 ครั้งและมีค่ามากกว่าค่ายาวสูงสุด (Long.MAX_VALUE)
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ภายในฟังก์ชั่นหลัก
-
หมายเลขอินพุตจะถูกส่งผ่านในวิธี calculateReverseandAdd(input)
-
-
ภายในเมธอด calcReverseandAdd
-
มีการแนะนำตัวแปรใหม่ rev_number
-
วนซ้ำด้วยหมายเลขเงื่อนไข <=max
-
ภายในลูป การย้อนกลับของตัวเลขได้มาจากการส่งตัวเลขผ่านเมธอด reverseNumber()
-
ตัวเลขที่กลับด้านจะถูกเพิ่มเข้ากับหมายเลขอินพุต
-
จากนั้นตรวจสอบหมายเลขที่ได้รับสำหรับ palindrome โดยส่งหมายเลขในเมธอด checkPalindrome() , ถ้าใช่ ตัวเลขจะถูกพิมพ์ออกมาเป็นเอาต์พุตให้กับผู้ใช้
-
หากตัวเลขไม่ใช่พาลินโดรม กระบวนการเดียวกันจะถูกทำซ้ำกับตัวเลขที่ได้รับจนกว่าจะได้พาลินโดรม หากจำนวนผลลัพธ์มากกว่าค่ายาวสูงสุด จะไม่มี palindrome ที่เป็นไปได้ในช่วงสำหรับจำนวนที่ระบุ
-
ตัวอย่าง
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