نن Palو پلنڊروم


تڪليف جي سطح سخت
بار بار پڇڻ ۾ Amazon دهلي حقيقت جو جائزو
اسٽرنگ

مختصر ترين پلنڊروم مسئلي ۾ ، اسان هڪ ڏني آهي جملو ڊي ڊيگهه جي. انهي کي ليولڻ وارو ٺاهيو انهي کي سامهون رکڻ لاءِ جيڪڏهن اهو نه آهي. نن stringن نن countن انگن اکرن کي پرنٽ ڪيو ته ڏنل تار کي پاليلڊروم ٺاهيو وڃي ٿو.

نن Palو پلنڊروم

مثال

داخل: s = بي

پيداوار: 2 (اڳيان ۽ سي کي شامل ڪرڻ سان پالينڊروم cbabc جو نتيجو ٿيندو)

داخل: س = ابا

پيداوار: 1 (مئٽرڪ شامل ڪرڻ سان پالينڊروم ايباءَ جو نتيجو ٿيندو)

سادو طريقو

الورورٿم

  1. ڊيگهه جي اسٽرنگ جي شروعات ايل.
  2. ڳڻپ ۽ پرچم متغير کي اسٽور ڪرڻ لاءِ انٽيگر ڪيريئر ٺاهيو شروعاتي طور ٻئي متغير کي 0 جي طور تي شروع ڪيو.
  3. تار تان لور ڪريو جڏهن ته ان جي ڊيگهه 0. کان وڏي آهي ، تار ذريعي هڪ طرف ڪريو ۽ شروعاتي ڪردار کي ختم ڪندڙ ڪردار جو موازنہ ڪرڻ شروع ڪريو ايتري تائين جو توهان تار تان وچ ۾ پهچي وڃو. جيڪڏھن موجوده اسٽرنگ پلنڊروم آھي يعني شروعاتي حرف ختم ٿيڻ وارن اکرن وانگر آھن ، پرچم متغير کي 1 وانگر تبديل ڪريو ۽ لوپ کي ٽوڙيو.
  4. ايلس 1 جي حساب سان متحرڪ وڌايو ۽ اسٽرنگ جو آخري ڪردار هٽايو
  5. جيڪڏھن پرچم متغير 1 جي برابر آھي ، پرنٽ ڳڻپ.

مختصر پاينڊرروم ڳولڻ لاءِ C ++ پروگرام

#include<bits/stdc++.h> 
using namespace std; 
  
bool isPalindrome(string s){ 
    int l = s.length(); 
    int j; 
      
    for(int i=0, j=l-1; i<=j; i++, j--){ 
        if(s[i] != s[j]) 
            return false; 
    } 
    return true; 
} 
  
int main(){ 
    string s = "abc"; 
    int count = 0, f = 0; 
      
    while(s.length()>0){ 
        if(isPalindrome(s)){ 
            f = 1; 
             break; 
        } 
        else{ 
            count++; 
            s.erase(s.begin() + s.length() - 1); 
        } 
    } 
      
    if(f) 
        cout<<count; 
}
2

جاوا پروگرام تمام نن palڙو پلنروم ڳولڻ لاءِ

class Palindrome{ 
  
    static boolean isPalindrome(String s){ 
        int l = s.length(); 
  
        for(int i=0, j=l-1; i<=j; i++, j--){ 
            if(s.charAt(i) != s.charAt(j)){ 
                return false; 
            } 
        } 
        return true; 
    } 
  
    public static void main(String[] args){ 
        String s = "abc"; 
        int count = 0, f = 0; 
  
        while(s.length() > 0){ 
            if(isPalindrome(s)){ 
                f = 1; 
                break; 
            } 
            else{ 
                count++; 
  
                s = s.substring(0, s.length() - 1); 
            } 
        } 
  
        if(f == 1){ 
            System.out.println(count); 
        } 
    } 
}
2

پيچيدگي تجزيي

وقت جي پيچيدگي: اي (ايل * ايل) (ايل واري تار جي ڊيگهه آهي)

معاون خلائي: اي (1) ڇاڪاڻ ته اسان مسلسل اضافي جڳهه استعمال ڪئي

مؤثر طريقو

الورورٿم

  1. ڊيگهه جي اسٽرنگ جي شروعات ايل.
  2. ھڪڙي اسٽرنگ ٺاھيو ٺاھيو ۽ ان ۾ اصلي اسٽرنگ جو ريورس محفوظ ڪريو.
  3. اسٽرنگ جي ميلاپ کي اسٽور ڪرڻ لاءِ هڪ ٻئي اسٽرنگ ٺاهيو ۽ اصلي اسٽرنگ جو مجموعو ۽ ان وچ ۾ هڪ خاص ڪردار رکندڙ ريورسنگ اسٽرنگ کي اسٽور ڪريو.
  4. ھڪڙي ايل ايس پي صف کي شروعاتي ڪريو.
  5. اسٽرنگ ذريعي لنگھيو ۽ ايلپس صف جي قدرن کي تازو ڪريو.
  6. ايل پي ايس آرٽ واپس ڪريو.

مختصر پاينڊرروم ڳولڻ لاءِ C ++ پروگرام

#include <bits/stdc++.h> 
using namespace std; 
  
vector<int> computeLPSArray(string s){ 
    int l = s.length(); 
    vector<int> lps(l); 
  
    int len = 0; 
    lps[0] = 0; 
  
    int i = 1; 
    while(i<l){ 
        if(s[i] == s[len]){ 
            len++; 
            lps[i] = len; 
            i++; 
        } 
        else{ 
            if(len != 0){ 
                len = lps[len-1]; 
            } 
            else{ 
                lps[i] = 0; 
                i++; 
            } 
        } 
    } 
    return lps; 
} 
  
int minChar(string s){ 
    string rev = s; 
    reverse(rev.begin(), rev.end()); 
  
    string concat = s + "$" + rev; 
  
    vector<int> lps = computeLPSArray(concat); 
  
    return(s.length() - lps.back()); 
} 
  
int main(){ 
    string s = "abc"; 
    cout<<minChar(s); 
    return 0; 
}
2

جاوا پروگرام تمام نن palڙو پلنروم ڳولڻ لاءِ

class Palindrome{ 
  
    public static int[] computeLPSArray(String s){ 
        int l = s.length(); 
        int lps[] = new int[l]; 
        int i = 1, len = 0; 
        lps[0] = 0;
          
        while(i < l){ 
            if(s.charAt(i) == s.charAt(len)){ 
                len++; 
                lps[i] = len; 
                i++; 
            } 
            else{ 
                if(len != 0){ 
                    len = lps[len - 1]; 
                } 
                else{ 
                    lps[i] = 0; 
                    i++; 
                } 
            } 
        } 
        return lps; 
    } 
      
    static int minChar(String s){  
        StringBuilder S = new StringBuilder(); 
        S.append(s); 
          
        String rev = S.reverse().toString(); 
        S.reverse().append("$").append(rev); 
          
        int lps[] = computeLPSArray(S.toString()); 
        return s.length() - lps[S.length() - 1]; 
    } 

    public static void main(String[] args){ 
        String s = "abc"; 
        System.out.println(minChar(s)); 
    } 
}
2

پيچيدگي تجزيي

وقت جي پيچيدگي: اي (ايل) (ايل واري تار جي ڊيگهه آهي)

معاون خلائي: اي (ايل) ڇاڪاڻ ته اسان ايل اکرن لاءِ اضافي جڳهه استعمال ڪئي.

حوالا