กำหนดจำนวนเต็มบวก num ตรวจสอบว่าเป็น Palindrome (อ่านจากซ้าย-ขวา และขวา-ซ้าย ได้เหมือนกัน) โดยห้ามแปลงเป็น String
ตัวอย่าง: 1331 → true
วิธีแก้ปัญหา
- เก็บค่าเดิมไว้ใน
x - สร้างตัวเลขย้อนกลับ
retโดยวนลูปดึงหลักสุดท้าย (num % 10) และสร้างret = ret * 10 + d - ลด
num /= 10จนหมด - เปรียบเทียบ
x == ret
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool solve(int num) {
int ret = 0, x = num;
while(num > 0) {
int d = num % 10;
ret = ret * 10 + d;
num /= 10;
}
return x == ret;
}
};
int main() {
Solution ob;
cout << (ob.solve(1331));
}
Input
1331
Output
1