Mündəricat
Problem bəyanat
“Palindrom nömrəsi” problemi sizə tam nömrə verildiyini bildirir. Palindrom olub olmadığını yoxlayın. Verilən ədədi sətrə çevirmədən bu problemi həll edin.
misal
12321
true
Izahat
12321 palindrom nömrəsidir, çünki 12321-i tərs çevirdikdə verilən rəqəmlə eyni olan 12321 verir. Beləliklə, 12321 palindrom nömrəsidir.
-12321
false
Izahat
-12321 palindrom nömrəsi deyil, çünki tərs -12321 verdiyimiz rəqəmlə eyni olmayan 12321 verir. Yəni -12321 palindrom nömrəsi deyil.
Üçün yanaşma Palindrom nömrəsi yoxlanılır
Ağlımıza gələn ilk yanaşma, verilən ədədi bir sətrə çevirmək və palindrom olub olmadığını yoxlamaqdır. Ancaq bunu edə bilmərik, çünki bu yanaşma məhduddur və bunun üçün əlavə yer tələb edirik sim.
Mənfi bir rəqəmin heç vaxt palindrom rəqəmi olmadığına dair bir vacib məqamı da müşahidə edə bilərik.
Buna görə fərqli bir şəkildə yanaşmağa çalışacağıq. Nömrəni tərsinə çevirib dəyişəndə saxlayacağıq və orijinal ədədə bərabərdirsə müqayisə edəcəyik. Əks rəqəm orijinal rəqəmə bərabərdirsə, bu palindrom deyil, əksinə palindrom deyil.
Verilən ədədi geri qaytarmaq üçün (qalan = n% 10) sayın son rəqəmini verir. Ters nömrəni (reversed = reversed * 10 + qalan) ilə yaradacağıq. İndi ikinci son rəqəmi almaq üçün rəqəmi 10-a böləcəyik. Bu əməliyyatı n-nin dəyəri sıfırdan böyük olana qədər təkrarlayırıq.
Nəhayət, orijinal ədədin tərs saya bərabər olduğunu müqayisə edəcəyik. Bəli, onda nömrə palindrom nömrəsidir, əks halda palindrom nömrəsi deyil.
Kodu
Palindrom nömrəsi üçün C ++ kodu
#include<bits/stdc++.h> using namespace std; bool isPalindrome(int num){ if(num < 0) return false; int reversed = 0, remainder, original = num; while(num != 0) { remainder = num % 10; reversed = reversed * 10 + remainder; num /= 10; } return original == reversed; } int main() { if(isPalindrome(12321)) cout<<"Yes, it is Palindrome"; else cout<<"No, not Palindrome"; }
Yes, it is Palindrome
Palindrome Sayı üçün Java kodu
public class check { static boolean isPalindrome(int num){ if(num < 0) return false; int reversed = 0, remainder, original = num; while(num != 0) { remainder = num % 10; reversed = reversed * 10 + remainder; num /= 10; } return original == reversed; } public static void main(String args[]){ if(isPalindrome(12321)) System.out.println("Yes, it is Palindrome"); else System.out.println("No, not Palindrome"); } }
Yes, it is Palindrome
Mürəkkəblik təhlili
Zaman mürəkkəbliyi
Bir rəqəmin palindrom olub olmadığını yoxlamaq üçün vaxt mürəkkəbliyi
Kosmik mürəkkəblik
O (1) çünki əks nömrəni saxlamaq üçün əlavə bir dəyişən istifadə edirik.