เราได้รับเป็นจำนวนเต็มและวาระที่นี่คือการกลับหลักของตัวเลขและเพิ่มตัวเลขที่กลับด้านกับตัวเลขเดิมและตรวจสอบว่าตัวเลขผลลัพธ์เป็น 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