मान लीजिए, हमें दो स्ट्रिंग्स दी गई हैं, str1 और str2। str2, str1 का एक सबस्ट्रिंग है, और हम str1 से str2 को हटा सकते हैं। यह संभव है कि स्ट्रिंग str2, str1 में कई बार दिखाई दे। हमारा लक्ष्य यहां यह पता लगाना है कि क्या str1 एक नल स्ट्रिंग बन जाती है यदि हम str2 को str1 से कई बार हटाते रहें। यदि संभव है तो हम 1 वापस करते हैं, अन्यथा 0।
इसलिए, यदि इनपुट str1 = "CCCPPPPPP", str2 = "CPP" है; तो आउटपुट सत्य होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- जब तक str1 का आकार > 0, करें:
- index := str1 में str2 की शुरुआती स्थिति लौटाएं
- यदि index -1 के समान है, तो: लूप से बाहर आएं
- str1 से str2 हटाएं
- यदि str1 का आकार 0 के समान है तो 1 वापस करें, अन्यथा 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