मान लीजिए कि हमारे पास 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