ในบทความนี้เราจะมาดูวิธีตรวจสอบว่า Number เป็น Palindrome หรือไม่ Palindrome Number คือตัวเลขที่อ่านจากซ้ายไปขวาและขวาไปซ้ายได้เหมือนกัน เช่น 12321 เป็น Palindrome แต่ 12345 ไม่ใช่
ตรรกะตรงไปตรงมา: กลับตัวเลข (Reverse) ถ้าตัวเลขที่กลับแล้วเท่ากับตัวเลขเดิม ก็คือ Palindrome
อัลกอริทึม
isPalindrome(n)
Input - Number n
Output - true ถ้าเป็น Palindrome มิฉะนั้น false
begin
temp := n
rev := 0
while n > 0, do
rev := rev * 10 + (n mod 10)
n := n / 10
done
if rev = temp, then
return true
return false
end
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
bool isPalindrome(int number) {
int temp = number;
int rev = 0;
while(number > 0) {
rev = 10 * rev + number % 10; // take last digit, attach with rev
number /= 10;
}
if(rev == temp)
return true;
return false;
}
int main() {
int n = 12321;
if(isPalindrome(n)) {
cout << n << " is palindrome number";
} else {
cout << n << " is not a palindrome number";
}
}
ผลลัพธ์
12321 is palindrome number