#include<stdio.h> #include<string.h> int main() { int i,k,len; char str[1000]; while(scanf("%s",&str)!=EOF) {k=0; getchar(); len=strlen(str); for(i=0;i<len;i++) { if(str[i]=='(') k++; else if(str[i]==')') k--; else printf("%d\n",k); } } return 0; }
在判断的时候,由左及右,,若碰到‘(’加一,若碰到‘)’减一,,因为如果仅仅在碰到‘(’时加一的话,,容易碰到如(((()(B)()))())的情况,这时仅统计‘(’的时候就容易多统计,因此如果在统计时遇到‘)’说明在其之前有多统计的,那么就减一,就可以把多统计的去除,得到的即为最短的次数