题意:给出一个串,只包含 ( ? ) 三种符号,求出有多少个子串是完美匹配的.
( ) ? ) => ( ) ( ) 完美匹配
( ( ) ? => ( ( ) )完美匹配
? ? ? ? => ( ) ( )
=> ( ( ) )
算一种子串
思路:看代码。
#include<bits/stdc++.h> using namespace std; #define int long long signed main(){ string str; cin>>str; int ans=0; for(int i=0;i<str.size();i++){ int sum=0; int add=0; for(int j=i;j<str.size();j++){ if(str[j]=='('){ sum++; }else if(str[j]==')'){ sum--; }else{ sum--;// 当做右括号 add++;//?的总个数 } if(!sum) ans++; //能匹配的时候 if(sum<0){ if(add==0){ break; }else{ sum+=2;// add--; } } } } cout<<ans<<' '; return 0; }