Etibarlı Palindrome II Leetcode Həlli

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Amazon alma Bloomberg eBay Facebook google MakeMyTrip microsoft Kahin Über Arzu Yahoo
Görməmiş Sim tiktok İki işarə Walmart Qlobal texnologiyaBaxılıb 52

Problem bəyanat

The Etibarlı Palindrome II LeetCode Həlli - “Valid Palindrome II” simli verildiyini bildirir s, biz doğru əgər qayıtmaq lazımdır s silindikdən sonra palindrom sətri ola bilər ən çox bir xarakter.

Misal:

Input:  s = "aba"
Output: true

Explanation:

  • Giriş sətri artıq palindromdur, ona görə də hər hansı simvolu silməyə ehtiyac yoxdur.
Input:  "abc"
Output: false

Explanation:

  • Ən çox bir simvolu sildikdən sonra palindrom sətri ola bilməz.
  • 1 simvol silindikdən sonra yaranan sətirlər bunlardır: [“bc”, “ac”, “ab”]. Onların heç biri palindrom deyil.

Yanaşma

Idea:

  1. Bu problemi həll etmək üçün əsas fikir istifadə etməkdir Palindrom yoxlanışı, giriş sətirinin başlanğıc və arxa tərəflərindən.
  2. Initialize l = 0 r = n – 1, burada n = sətrin uzunluğu.
  3. s[l] və s[r] simvolları bərabər olana qədər təkrarlayın, l isə r-dən kiçik və ya ona bərabər olmalıdır.
  4. İndi, nə vaxt, personajlar l-ci və r-ci mövqe qeyri-bərabərdir, biz giriş sətirinin ya l-ci simvolunu, ya da r-ci simvolunu silməliyik.
  5. Deməli, var iki hal:
    1. Giriş sətri varsa artıq a palindrom sim əks halda
    2. If S(l,r-1) palindrom simidir və ya S(l+1,r) palindrom simidir.
  6. Qeyd edək ki, l və r simvolların fərqli olduğu indekslərdir.
  7. Hər hansı bir halın doğru olduğunu qaytarın doğru 5-də, əks halda saxta.

Kodu

Etibarlı Palindrome II C++ Həlli:

class Solution {
public:
    bool isPal(int l,int r,string s){
        while(l<r){
            if(s[l]!=s[r]){
                return false;
            }
            l++;r--;
        }
        return true;
    }
    bool validPalindrome(string s) {
        int l = 0,r = s.length() - 1;
        while(l<r and s[l]==s[r]){
            l++;r--;
        }
        return isPal(l+1,r,s) or isPal(l,r-1,s);
    }
};

Etibarlı Palindrome II Java Həlli:

class Solution {
    private boolean isPal(int l,int r,String s){
        while(l<r){
            if(s.charAt(l)!=s.charAt(r)){
                return false;
            }
            l++;r--;
        }
        return true;
    }
    public boolean validPalindrome(String s) {
        int l = 0,r = s.length() - 1;
        while(l<r && s.charAt(l)==s.charAt(r)){
            l++;r--;
        }
        return isPal(l+1,r,s) || isPal(l,r-1,s);
    }
}

Etibarlı Palindrome II Leetcode Həlli üçün Mürəkkəblik Təhlili

Zamanın mürəkkəbliyi

Yuxarıdakı kodun zaman mürəkkəbliyi O (N) çünki hər xarakterə ən çox iki dəfə daxil oluruq.

Kosmik Mürəkkəblik

Yuxarıdakı kodun kosmik mürəkkəbliyi O (1) çünki biz daimi boşluqdan istifadə edirik.

Translate »