मान लीजिए हमारे पास n वर्णों वाली एक स्ट्रिंग S है। S में लोअरकेस अंग्रेजी अक्षर और ')' वर्ण हैं। स्ट्रिंग खराब है, यदि अंत में ')' वर्णों की संख्या शेष वर्णों की संख्या से सख्ती से अधिक है। हमें जांचना है कि S खराब है या नहीं।
उदाहरण के लिए, यदि इनपुट S = "fega))))))" है, तो आउटपुट True होगा, क्योंकि यह खराब है क्योंकि 4 अक्षर और 6 ')' हैं।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
ans := 0 n := size of S i := n - 1 while (i >= 0 and S[i] is same as ')'), do: (decrease i by 1) z := n - 1 - i ans := 2 * z - n if ans > 0, then: return true Otherwise return false
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; bool solve(string S) { int ans = 0; int n = S.size(); int i = n - 1; while (i >= 0 && S[i] == ')') i--; int z = n - 1 - i; ans = 2 * z - n; if (ans > 0) return true; else return false; } int main() { string S = "fega))))))"; cout << solve(S) << endl; }
इनपुट
"fega))))))"
आउटपुट
1