牛客题解 | 缺失的括号

题目

题目链接

题解

难度:中等难度

知识点:数学逻辑

思路:

依次判断:
1.若是s[i]为“(”是,是得left++。

当s[i]为“)”时:如果left>0,说明该“)”可以和之前的“(”抵消,因此left--。若此时left=0,说明给“)”无法抵消因此right++。

2.最终left保留没有被抵消的“(”,right保留没有被抵消的“)”。Left+right为最终需要添加的符号数。
图片说明

【注】如果直接对“(”和“)”进行计数操作,最终以abs(left-right)会发生错误。

例:

)(:此时若单纯计算left=1,right=1,abs(left-right)=0;
图片说明
Left+right=2。

#include<iostream>
#include<cmath>
using namespace std;
int main(){
  string s;
  cin&gt;&gt;s;
  int left=0,right=0;
  for(int i=0;i</cmath></iostream>
posted @ 2025-03-11 10:19  wangxiaoxiao  阅读(9)  评论(0)    收藏  举报