പലിൻഡ്രോം നമ്പർ


വൈഷമ്യ നില എളുപ്പമായ
പതിവായി ചോദിക്കുന്നു അഡോബി ആമസോൺ ബ്ലൂംബർഗ് DBOI ഗൂഗിൾ MAQ മൈക്രോസോഫ്റ്റ് o9 പരിഹാരങ്ങൾ
മഠം

പ്രശ്നം പ്രസ്താവന

“പലിൻഡ്രോം നമ്പർ” എന്ന പ്രശ്നം നിങ്ങൾക്ക് ഒരു പൂർണ്ണ സംഖ്യ നൽകിയിട്ടുണ്ടെന്ന് പറയുന്നു. ഇത് ഒരു പലിൻഡ്രോം ആണോ എന്ന് പരിശോധിക്കുക. നൽകിയ നമ്പർ ഒരു സ്ട്രിംഗായി പരിവർത്തനം ചെയ്യാതെ ഈ പ്രശ്നം പരിഹരിക്കുക.

പലിൻഡ്രോം നമ്പർ

ഉദാഹരണം

12321
true

വിശദീകരണം

12321 ഒരു പലിൻഡ്രോം നമ്പറാണ്, കാരണം നമ്മൾ 12321 റിവേഴ്‌സ് ചെയ്യുമ്പോൾ അത് 12321 നൽകുന്നു, അത് നൽകിയ സംഖ്യയ്ക്ക് തുല്യമാണ്. അതിനാൽ 12321 ഒരു പലിൻഡ്രോം നമ്പറാണ്.

-12321
false

വിശദീകരണം

-12321 ഒരു പലിൻഡ്രോം നമ്പറല്ല, കാരണം നമ്മൾ -12321 റിവേഴ്‌സ് ചെയ്യുമ്പോൾ അത് 12321- നൽകുന്നു, അത് നൽകിയ സംഖ്യയ്ക്ക് തുല്യമല്ല. അതിനാൽ -12321 ഒരു പലിൻഡ്രോം നമ്പറല്ല.

ഇതിനായുള്ള സമീപനം പലിൻഡ്രോം നമ്പർ പരിശോധന

ഞങ്ങളുടെ മനസ്സിൽ വരുന്ന ആദ്യത്തെ സമീപനം, നൽകിയ സംഖ്യയെ ഒരു സ്ട്രിംഗിലേക്ക് പരിവർത്തനം ചെയ്യുകയും അത് പലിൻഡ്രോം ആണോ എന്ന് പരിശോധിക്കുകയുമാണ്. എന്നാൽ ഞങ്ങൾക്ക് ഇത് ചെയ്യാൻ കഴിയില്ല കാരണം ഈ സമീപനം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു കൂടാതെ ഞങ്ങൾക്ക് അധിക ഇടം ആവശ്യമാണ് സ്ട്രിംഗ്.

നെഗറ്റീവ് സംഖ്യ ഒരിക്കലും പലിൻഡ്രോം സംഖ്യയല്ല എന്ന ഒരു പ്രധാന പോയിന്റും നമുക്ക് നിരീക്ഷിക്കാനാകും.

അതിനാൽ ഞങ്ങൾ അതിനെ മറ്റൊരു രീതിയിൽ സമീപിക്കാൻ ശ്രമിക്കും. ഞങ്ങൾ നമ്പർ റിവേഴ്സ് ചെയ്ത് ഒരു വേരിയബിളിൽ സംഭരിക്കുകയും അത് യഥാർത്ഥ നമ്പറിന് തുല്യമാണെങ്കിൽ താരതമ്യം ചെയ്യുകയും ചെയ്യും. വിപരീത സംഖ്യ യഥാർത്ഥ സംഖ്യയ്ക്ക് തുല്യമാണെങ്കിൽ ആ സംഖ്യ ഒരു പലിൻഡ്രോം അല്ലെങ്കിൽ അത് പലിൻഡ്രോം അല്ല.

തന്നിരിക്കുന്ന നമ്പർ വിപരീതമാക്കാൻ ഞങ്ങൾ നിർവ്വഹിക്കും (ശേഷിക്കുന്ന = n% 10) ഇത് സംഖ്യയുടെ അവസാന അക്കം നൽകുന്നു. വിപരീത സംഖ്യ ഉപയോഗിച്ച് ഞങ്ങൾ ജനറേറ്റുചെയ്യും (വിപരീത = വിപരീത * 10 + ശേഷിക്കുന്ന). രണ്ടാമത്തെ അവസാന അക്കം ലഭിക്കുന്നതിന് ഇപ്പോൾ ഞങ്ങൾ സംഖ്യയെ 10 കൊണ്ട് ഹരിക്കും. N ന്റെ മൂല്യം പൂജ്യത്തേക്കാൾ വലുതായിരിക്കുന്നതുവരെ ഞങ്ങൾ ഈ പ്രക്രിയ ആവർത്തിക്കുന്നു.

അവസാനം, യഥാർത്ഥ സംഖ്യ വിപരീത സംഖ്യയ്ക്ക് തുല്യമാണെങ്കിൽ ഞങ്ങൾ താരതമ്യം ചെയ്യും. അതെ എങ്കിൽ നമ്പർ ഒരു പലിൻഡ്രോം നമ്പറാണ്, അല്ലെങ്കിൽ അത് ഒരു പലിൻഡ്രോം നമ്പറല്ല.

കോഡ്

പലിൻഡ്രോം നമ്പറിനായുള്ള സി ++ കോഡ്

#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

പലിൻഡ്രോം നമ്പറിനായുള്ള ജാവ കോഡ്

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

സങ്കീർണ്ണത വിശകലനം

സമയ സങ്കീർണ്ണത

ഒരു നമ്പർ ഒരു പലിൻഡ്രോം ആണോ എന്ന് പരിശോധിക്കാനുള്ള സമയ സങ്കീർണ്ണത  

സ്ഥല സങ്കീർണ്ണത

O (1) കാരണം വിപരീത സംഖ്യ സംഭരിക്കാൻ ഞങ്ങൾ ഒരു അധിക വേരിയബിൾ ഉപയോഗിക്കുന്നു.