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

एक न्यूनतम सबस्ट्रिंग के साथ दो सबस्ट्रिंग खोजने के लिए सी ++ कोड

मान लीजिए कि हमारे पास n वर्णों के साथ एक लोअरकेस स्ट्रिंग S है। हमें दो गैर-रिक्त सबस्ट्रिंग्स P और Q को इस प्रकार खोजना है कि -

  • पी और क्यू दोनों एस के बाद के हैं

  • प्रत्येक अनुक्रमणिका i के लिए, S[i], P और Q में से ठीक एक से संबंधित है।

  • पी यथासंभव न्यूनतम है।

इसलिए, यदि इनपुट एस ="द लाइटसैबर" जैसा है, तो आउटपुट 10 होगा, क्योंकि हमें 2 रेडनोटबुक, 3 ग्रीन नोटबुक और 5 ब्लू नोटबुक की आवश्यकता है।

कदम

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

c := S
sort the array c
a := position of (c[0]) in S
delete c from S
print c[0] and S
से (c[0]) की स्थिति

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
void solve(string S){
   string c = S;
   sort(c.begin(), c.end());
   int a = S.find(c[0]);
   S.erase(S.begin() + a);
   cout << c[0] << ", " << S << endl;
}
int main(){
   string S = "thelightsaber";
   solve(S);
}

इनपुट

"thelightsaber"

आउटपुट

a, thelightsber

  1. सी ++ में एक फ्लिप के साथ बाइनरी प्रतिनिधित्व में 1 का सबसे लंबा अनुक्रम खोजें

    मान लीजिए कि हमारे पास एक पूर्णांक n है। उसके अंदर, हम 1s के सबसे लंबे अनुक्रम को उत्पन्न करने के लिए एक-बिट फ्लिप कर सकते हैं। मान लीजिए कि संख्या 13 है, तो द्विआधारी प्रतिनिधित्व 1101 है। यदि हम 0 से 1 के रूप में एक-बिट फ्लिप करते हैं, तो यह 1111 होगा। यह 1s का सबसे लंबा अनुक्रम है इस समस्या को ह

  1. पता लगाएं कि किसी सरणी में C++ में एक बेमेल के साथ एक स्ट्रिंग है या नहीं

    मान लीजिए कि हमारे पास एक स्ट्रिंग s है, और स्ट्रिंग्स A की एक और सरणी है। हमें यह पता लगाना है कि क्या सरणी में एक स्ट्रिंग है जिसमें विभिन्न लंबाई की वर्तमान स्ट्रिंग से एक-वर्ण अंतर है। मान लीजिए कि स्ट्रिंग केला की तरह है, और सरणी [बाना, नारंगी, बनबा, बनपी] जैसी दिखती है, परिणाम सही होगा, क्योंक

  1. एक स्ट्रिंग के सबसे लंबे अनुक्रम की लंबाई ज्ञात करें जो C++ में किसी अन्य स्ट्रिंग को प्रतिस्थापित कर रहा है

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