一个字符串包含 '('、 ')' 和别的,求完整的括号的个数。"(()())"=>3 、")()"=>1
遇到一个右括号——)就是一个括号结束,除非左边没有左括号。
所以只需要一个深度计数器来记录一下当前是不是有一个括号还没结束 int depth=0;
depth==0 是唯一需要忽略右括号的情况,附上C语言代码:
int count(char[] s){ int count=0, depth=0; for(int i=0; s[i]!='\0'; i++){ if(s[i] == '(') depth++; if(s[i] == ')' && depth > 0){ count++; depth--; } } return count; }