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