C++ 程序检查给定的字符串是不是坏的


假设我们有一个包含 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

更新于:2022-03-03

252 次浏览

开启你的 职业生涯

完成课程以获得认证

开始
广告