मान लीजिए कि हमारे पास n वर्णों के साथ एक स्ट्रिंग S है। S में लोअरकेस अंग्रेजी अक्षर और ')' अक्षर हैं। स्ट्रिंग खराब है, अगर अंत में वर्णों की संख्या ')' शेष वर्णों की संख्या से सख्ती से अधिक है। हमें जांचना है कि S खराब है या नहीं।
इसलिए, यदि इनपुट S ="fega))))))" जैसा है, तो आउटपुट ट्रू होगा, क्योंकि यह खराब है क्योंकि इसमें 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