Palindromik Subsesences Leetcode həllini silin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon
alqoritmlər kodlaşdırma müsahibə müsahibə hazırlığı LeetCode LeetCodeSolutions SimBaxılıb 71

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 Palindromic Subsequences Sil Leetcode Solution sizə verildiyini bildirir sim. Sətir yalnız 'a' və ya 'b' iki simvoldan ibarətdir. Bütün simli silmək tələb olunur. Bir hərəkətdə yalnız palindromik alt silməyi silə biləcəyiniz bir məhdudiyyət var. Bütün simli silmək üçün tələb olunan minimum addım sayını tapın. Həlli atlamadan əvvəl bir neçə nümunəyə nəzər salaq.

Palindromik Subsesences Leetcode həllini silinPin

s = "ababa"
1

İzahat: Simli palindrom olduğundan. Bütün hərəkəti tək bir hərəkətlə silə bilərik. Beləliklə cavab da 1-dir.

s = "abb"
2

İzahat: İlk hərəkətdə “bb” çıxardırıq. İkinci hərəkətdə “a” işarəsini çıxarırıq. Beləliklə, bütün simli silmək üçün ən azı 2 hərəkət tələb edirik.

Palindromic Subsequences Leetcode Solüsyonunun çıxarılması üçün yanaşma

Palindromic Subsequences Sil Leetcode Solution problemi müşahidələrdən biridir. Sətrin yalnız 'a' və 'b' iki simvoldan ibarət olduğunu müşahidə etməyimiz tələb olunur. Bir palindromla qarşılaşırıqsa, sadəcə 1-i qaytarırıq. Çünki bütün palindromu silmək üçün tək bir hərəkət tələb olunur. Boş bir simli alsaq, 0-a qayıtmalıyıq. Ancaq bunlardan başqa, bütövlükdə palindrom olmayan bir simli olduğumuzda yalnız bir vəziyyət var.

Lakin simli yalnız 'a' və 'b' olduğundan. Bütün simvolları silmək üçün ən çox 2 hərəkət edəcəyik. İlk hərəkətdə 'a' sının hamısını çıxarmalıyıq. İkinci hərəkətdə hamısını 'b' lərdən çıxarırıq. Beləliklə, bu p [problemin cavabı girişdən asılı olaraq yalnız 0, 1 və ya 2 ola bilər.

Palindromik Subsesences Leetcode həllini aradan qaldırmaq üçün kod

C ++ kodu

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

int removePalindromeSub(string s) {
    if(s.size() == 0)
        return 0;

    // check if palindrome
    bool isPalin = true;
    for(int i=0;i<s.length()/2;i++)
        if(s[i] != s[s.length()-1-i])
            isPalin = false;

    if(isPalin == true)
        return 1;
    else
        return 2;
}

int main(){
    cout<<removePalindromeSub("abb");
}
2

Java kodu

import java.util.*;
import java.lang.*;
import java.io.*;

class Main
{
  public static int removePalindromeSub(String s) {
        if(s.isEmpty())
            return 0;
        
        // check if palindrome
        boolean isPalin = true;
        for(int i=0;i<s.length()/2;i++)
            if(s.charAt(i) != s.charAt(s.length()-1-i))
                isPalin = false;
        
        if(isPalin == true)
            return 1;
        else
            return 2;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    System.out.print(removePalindromeSub("abb"));
  }
}
2

Mürəkkəblik təhlili

Zamanın mürəkkəbliyi

O (N), çünki palindrom olub olmadığını yoxlamaq üçün bütün simdən keçməliyik.

Kosmik Mürəkkəblik

O (1), çünki dəyişkənlərdən sabit sayda istifadə edirik.

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