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

C++ में एक स्ट्रिंग के सबसे लंबे उपअनुक्रम की लंबाई ज्ञात करें जो दूसरी स्ट्रिंग का उपस्ट्रिंग हो


मान लीजिए, हमारे पास दो स्ट्रिंग्स X और Y हैं, और हमें स्ट्रिंग X के सबसे लंबे उपअनुक्रम की लंबाई ढूंढनी है, जो अनुक्रम Y में उपस्ट्रिंग है। इसलिए यदि X = "ABCD" और Y = "BACDBDCD", तो आउटपुट 3 होगा। क्योंकि "ACD" X का सबसे लंबा उप-अनुक्रम है, जो Y का उपस्ट्रिंग है।

यहां हम इस समस्या को हल करने के लिए डायनामिक प्रोग्रामिंग दृष्टिकोण का उपयोग करेंगे। इसलिए यदि X की लंबाई n है, और Y की लंबाई m है, तो (m+1)x(n+1) क्रम का DP सरणी बनाएं। DP[i, j] का मान X[0...j] के उपअनुक्रम की अधिकतम लंबाई है, जो Y[0...i] का उपस्ट्रिंग है। अब DP के प्रत्येक सेल के लिए, यह नीचे की तरह अनुसरण करेगा:

  • i के लिए 1 से m तक की रेंज में:
    • j के लिए 1 से n तक की रेंज में
      • जब X[i - 1], Y[j - i] के समान हो, तो DP[i, j] := 1 + DP[i - 1, j - 1]
      • अन्यथा DP[i, j] := 1 + DP[i, j - 1]

और अंत में x के सबसे लंबे उपअनुक्रम की लंबाई, जो y का उपस्ट्रिंग है, max(DP[i, n]) है, जहां 1 <= i <= m।

उदाहरण

#include<iostream> #define MAX 100 using namespace std; int maxSubLength(string x, string y) { int table[MAX][MAX]; int n = x.length(); int m = y.length(); for (int i = 0; i <= m; i++) for (int j = 0; j <= n; j++) table[i][j] = 0; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (x[j - 1] == y[i - 1]) table[i][j] = 1 + table[i - 1][j - 1]; else table[i][j] = table[i][j - 1]; } } int ans = 0; for (int i = 1; i <= m; i++) ans = max(ans, table[i][n]); return ans; } int main() { string x = "ABCD"; string y = "BACDBDCD"; cout << "Length of Maximum subsequence substring is: " << maxSubLength(x, y); }

आउटपुट

Length of Maximum subsequence substring is: 3

  1. - C++ में स्ट्रिंग की लंबाई खोजने का प्रोग्राम

    एक स्ट्रिंग एक एक-आयामी कैरेक्टर सरणी है जो नल कैरेक्टर द्वारा समाप्त होती है। स्ट्रिंग की लंबाई नल कैरेक्टर से पहले स्ट्रिंग में कैरेक्टर्स की संख्या होती है। उदाहरण के लिए। char str[] = “The sky is blue”; उपरोक्त स्ट्रिंग में कैरेक्टर्स की संख्या = 15 स्ट्रिंग की लंबाई खोजने का एक प्रो

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

    मान लीजिए हमारे पास एक लोअरकेस स्ट्रिंग s है, हमें उस सबसे लंबे सबस्ट्रिंग की लंबाई ढूंढनी है जो s में कम से कम दो बार आता है। यदि ऐसा कोई स्ट्रिंग नहीं मिलता, तो 0 लौटाएं। उदाहरण के लिए, यदि इनपुट है s = abdgoalputabdtypeabd, तो आउटपुट 3 होगा, क्योंकि सबसे लंबा सबस्ट्रिंग जो एक से अधिक बार आता है व

  1. - पायथन में एक 0-फ्लिप के बाद बाइनरी स्ट्रिंग में 1s के सबसे लंबे सबस्ट्रिंग की लंबाई खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है। हमें अधिकतम एक 0 को 1 में बदलने की अनुमति है, हमें 1s के सबसे लंबे सन्निहित सबस्ट्रिंग की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट है s = 1010110001, तो आउटपुट 4 होगा, क्योंकि यदि हम इंडेक्स 3 पर मौजूद जीरो को फ्लिप करते हैं, तो हमें स्ट्रिंग 1011110001