Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

सबसे लंबे पैलिंड्रोमिक सबसीक्वेंस के लिए Java प्रोग्राम

उदाहरण

public class Demo{
    static String longestSeq(String str1, String str2){
        int str1Len = str1.length();
        int str2Len = str2.length();
        char str1Arr[] = str1.toCharArray();
        char str2Arr[] = str2.toCharArray();
        int L[][] = new int[str1Len + 1][str2Len + 1];
        for (int i = 0; i <= str1Len; i++){
            for (int j = 0; j <= str2Len; j++){
                if (i == 0 || j == 0){
                    L[i][j] = 0;
                }
                else if (str1Arr[i - 1] == str2Arr[j - 1]){
                    L[i][j] = L[i - 1][j - 1] + 1;
                }
                else{
                    L[i][j] = Math.max(L[i - 1][j], L[i][j - 1]);
                }
            }
        }
        int myIndex = L[str1Len][str2Len];
        char[] longestSeq = new char[myIndex + 1];
        int i = str1Len, j = str2Len;
        while (i > 0 && j > 0){
            if (str1Arr[i - 1] == str2Arr[j - 1]){
                longestSeq[myIndex - 1] = str1Arr[i - 1];
                i--;
                j--;
                myIndex--;
            }
            else if (L[i - 1][j] > L[i][j - 1]){
                i--;
            } else {
                j--;
            }
        }
        String myResult = "";
        for (int x = 0; x < longestSeq.length; x++){
            myResult += longestSeq[x];
        }
        return myResult;
    }
    static String longestPalSubseq(String str){
        String revStr = str;
        revStr = reverseStr(revStr);
        return longestSeq(str, revStr);
    }
    static String reverseStr(String str){
        String myResult = "";
        char[] trial = str.toCharArray();
        for (int i = trial.length - 1; i >= 0; i--){
            myResult += trial[i];
        }
        return myResult;
    }
    public static void main(String[] args){
        String str = "HelloHelloo";
        System.out.println("सबसे लंबा पैलिंड्रोमिक सबसीक्वेंस है ");
        System.out.println(longestPalSubseq(str));
    }
}

आउटपुट

सबसे लंबा पैलिंड्रोमिक सबसीक्वेंस है llell

Demo नाम की एक क्लास में 'longestSeq' फ़ंक्शन होता है जो दो स्ट्रिंग्स और दो कैरेक्टर Arrays घोषित करता है। Arrays पर पुनरावृति की जाएगी, और डायनामिक प्रोग्रामिंग तकनीक का उपयोग करके सबसे लंबा पैलिंड्रोमिक अनुक्रम ढूंढा जाता है। इस मेथड में, एक बार किसी विशिष्ट Array के लिए मान मिल जाने पर, उसे स्टोर कर लिया जाता है और फिर से कंप्यूट नहीं किया जाता, जिससे गणना कुशल हो जाती है।

'longestPalSubseq' नाम का एक फ़ंक्शन स्ट्रिंग को पैरामीटर के रूप में लेता है, और स्ट्रिंग को रिवर्स करता है और रिवर्स्ड स्ट्रिंग को पास करके 'longestSeq' फ़ंक्शन को कॉल करता है। 'reverseStr' नाम का एक अन्य फ़ंक्शन फ़ंक्शन को पैरामीटर के रूप में पास की गई स्ट्रिंग को रिवर्स करने के लिए उपयोग किया जाता है। मुख्य फ़ंक्शन में, स्ट्रिंग को परिभाषित किया जाता है, और 'longestPalSubseq' फ़ंक्शन को कॉल किया जाता है, और आउटपुट कंसोल पर प्रदर्शित होता है।

  1. - कॉकटेल सॉर्ट के लिए जावा प्रोग्राम

    कॉकटेल सॉर्ट बबल सॉर्ट के विपरीत काम करता है, जिसमें एलिमेंट्स को बाएं से दाएं पुनरावृति किया जाता है, और सबसे बड़ा एलिमेंट पहले अपनी सही स्थिति में लाया जाता है और इसी तरह। कॉकटेल सॉर्ट में, एलिमेंट्स को वैकल्पिक क्रम में दोनों दिशाओं (बाएं और दाएं) में पुनरावृति किया जाता है। कॉकटेल सॉर्ट के लिए

  1. - स्ट्रिंग में स्वरों की गिनती के लिए Java प्रोग्राम

    मान लीजिए निम्नलिखित हमारा स्ट्रिंग है: String myStr = Jamie; वेरिएबल काउंट = 0 सेट करें, क्योंकि हम उसी वेरिएबल में स्वरों की गणना करेंगे। प्रत्येक कैरेक्टर के माध्यम से लूप करें और स्वरों की गिनती करें: for(char ch : myStr.toCharArray()) { ch = Character.toLowerCase(ch); if(ch == a || c

  1. - पायथन में सबसे लंबे पैलिंड्रोमिक सबसीक्वेंस की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है; हमें s में सबसे लंबे पैलिंड्रोमिक सबसीक्वेंस की लंबाई ढूंढनी है।उदाहरण के लिए, यदि इनपुट s = aolpeuvekyl है, तो आउटपुट 5 होगा, क्योंकि पैलिंड्रोम level है।समाधान दृष्टिकोणइस समस्या को हल करने के लिए हम रिकर्सिव DP (डायनामिक प्रोग्रामिंग) का उपयोग करेंगे: