Palindrom nömrəsi

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Çiy kərpic Amazon Bloomberg DBOI google MAQ microsoft o9 həlləri
RiyaziyyatBaxılıb 52

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.

Palindrom nömrəsiPin

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.

Translate »