मान लीजिए, हमें दो तार दिए गए हैं, str1 और str2। str2 str1 का एक विकल्प है, और हम str2 को str1 से हटा सकते हैं। यह संभव है कि स्ट्रिंग str2 str1 में कई बार प्रकट हो। यहां हमारा लक्ष्य यह पता लगाना है कि क्या str1 एक अशक्त स्ट्रिंग बन जाता है यदि हम str2 को str1 से कई बार हटाते रहते हैं। यदि संभव हो तो हम 1 लौटाते हैं, अन्यथा 0.
इसलिए, यदि इनपुट str1 ="CCCPPPPPP", str2 ="CPP" जैसा है; तब आउटपुट सही होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- str1> 0 के आकार के दौरान, −
- . करें
- अनुक्रमणिका:=str1 में str2 की स्ट्रिंग प्रारंभ स्थिति लौटाएं
- यदि सूचकांक -1 के समान है, तो −
- लूप से बाहर आएं
- str1 से str2 हटाएं
- वापसी 1 अगर str1 का आकार 0 के समान है, अन्यथा 0.
उदाहरण (C++)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include<bits/stdc++.h> using namespace std; bool solve(string str1, string str2) { while (str1.size() > 0) { int index = str1.find(str2); if (index == -1) break; str1.erase(index, str2.size()); } return (str1.size() == 0); } int main() { string str1 = "CCCPPPPPP", str2 = "CPP"; cout<<solve(str1, str2)<<endl; return 0; }
इनपुट
"CCCPPPPPP", "CPP"
आउटपुट
1