题目
题目链接
题解
难度:中等难度
知识点:数学逻辑
思路:
依次判断:
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>>s;int left=0,right=0;for(int i=0;i</cmath></iostream>