Trong PL/SQL (Oracle), bạn có thể kiểm tra một số có phải Palindrome (đối xứng) không bằng cách đảo ngược số và so sánh với gốc.
Ý tưởng
Số Palindrome: Đọc từ trái sang phải và phải sang trái giống nhau. VD: 12321, 4554, 7.
Ví dụ PL/SQL
DECLARE
n number;
m number;
temp number := 0;
rem number;
BEGIN
n := 12321;
m := n;
while n > 0
loop
rem := mod(n, 10); -- Lấy chữ số cuối
temp := (temp * 10) + rem; -- Xây số đảo ngược
n := trunc(n / 10); -- Bỏ chữ số cuối
end loop;
if m = temp
then
dbms_output.put_line('Palindrome');
else
dbms_output.put_line('Not Palindrome');
end if;
END;
Kết quả
Palindrome
Giải thích thuật toán:
- Lưu số gốc vào
m - Vòng lặp
WHILE n > 0:rem := MOD(n, 10): Lấy chữ số hàng đơn vịtemp := temp * 10 + rem: Dịch trái temp và thêm chữ số mớin := TRUNC(n / 10): Bỏ chữ số hàng đơn vị (chia nguyên 10)
- So sánh
m(gốc) vớitemp(đảo ngược)
Ví dụ trace 12321: n=12321→rem=1,temp=1,n=1232 → rem=2,temp=12,n=123 → rem=3,temp=123,n=12 → rem=2,temp=1232,n=1 → rem=1,temp=12321,n=0. Dừng. m=12321 = temp=12321 → Palindrome.
Lưu ý: Code PL/SQL chỉ chạy trên Oracle Database, không phải MySQL.