Rekursiyadan istifadə edən palindrom

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Capgemini Məlumat dəsti Infosys MAQ o9 həlləri Kahin kvadrat
Palindrom SimBaxılıb 1194

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Problem bəyanat

“Rekursiv Palindromun Yoxlanması” və ya “Rekursiyadan istifadə edən Palindrom” məsələsində biz sim "S". Verilən sətrin olub olmadığını yoxlamaq üçün bir proqram yazmalıyıq palindrom ya da istifadə etməmək rekursiya. Palindrom, madam və ya yarış avtomobili kimi irəli ilə eyni şəkildə geri oxunan söz, rəqəm, ifadə və ya digər simvol ardıcıllığıdır.

Qeyd: Rekursiya - həll yolunun eyni problemin kiçik nümunələrinə həll edilməsindən asılı olduğu problemin həlli metodudur.

Giriş Formatı

Birinci və yeganə sətir “s” sətirindən ibarətdir.

Çıxış formatı

Verilən sətir palindromdursa, “Bəli” yazdırın, əks halda “Xeyr” yazdırın.

Məhdudiyyətlər

  • 1 <= | s | <= 10 ^ 6
  • s [i] kiçik bir əlifba olmalıdır

misal

racecar
Yes

Explanation: Burada "racecar" ı soldan sağa və ya sağdan sola oxusaq o zaman mənası dəyişməz qalır. Beləliklə, ipimiz palindromdur.

racing
No

Explanation: Burada soldan sağa və ya sağdan sola "yarış" oxusaq, o zaman məna dəyişdi. Beləliklə, bu vəziyyətdə ipimiz palindrom deyil.

Rekursiv Palindrom Yoxlanışı üçün Alqoritm

1. Əsas hissədən "palindrome_check" funksiyasına zəng edin.

2. Sətrin uzunluğu 1-dirsə, True-a qayıdın.

3. Başqa, ilk və son simvolları müqayisə edin və yoxlayın.

4. Hər iki char eynidırsa, qalan alt sətirə rekursiya tətbiq edin.

5. Əks təqdirdə False;

Həyata keçirilməsi

Rekursiv Palindrom Yoxlanışı üçün C ++ Proqramı

#include <bits/stdc++.h>
using namespace std;

int palindrome_check(string s, int start, int end)
{
    if(end-start==1 || start==end)
    {
        return 1;
    }
    else
    {
        if(s[start]==s[end])
        {
            return palindrome_check(s,start+1,end-1); 
        }
        else
        {
            return 0;
        }
    }
}

int main()
{
   string s;
   cin>>s;
   int n=s.length();
   if(palindrome_check(s, 0, n-1))
   {
       cout<<"Yes"<<endl;
   }
   else
   {
       cout<<"No"<<endl;
   }
   return 0;
}

Rekursiv Palindrom Yoxlama üçün Java Proqramı

import java.util.Scanner;

class sum
{ 
        public static int palindrome_check(char [] s, int start, int end)
        {
            if(start==end || (end-start==1))
            {
                return 1;
            }
            else
            {
                if(s[start]==s[end])
                {
                    return palindrome_check(s,start+1,end-1);
                }
                else
                {
                    return 0;
                }
            }
        }
  public static void main(String[] args) 
  { 
    Scanner sr = new Scanner(System.in); 
                String s = sr.next();
                char a[] = s.toCharArray();
    int n = s.length();
                if(palindrome_check(a,0,n-1)==1)
                {
                    System.out.println("Yes");
                }
                else
                {
                    System.out.println("No");
                }
  } 
} 
abcdcba
Yes

Rekursiv Palindrom Yoxlanışı üçün Mürəkkəblik Analizi

Zamanın mürəkkəbliyi

O (n) hara n simli ölçüsüdür. Burada simlin başlanğıcını və sonunu yoxlayırıq və char həmin mövqedə eyni olduqda start və end dəyərlərini yeniləyirik, əks halda 0 qaytarırıq.

Kosmik Mürəkkəblik

O (1) çünki burada heç bir köməkçi yer yaratmırıq. Burada sadəcə bir funksiyanı təyin edirik və şərtləri əsas götürərək cavabı qaytarırıq.

Crack Sistemi Dizayn Müsahibələri
Translate »
1