Онлайн компилятор C

#include <stdio.h> int is_correct_brackets(char s[]){ int i=0; int open=0,close=0; while(s[i]!='.'){ if(s[i]=='('){ open++; i++; }else if(s[i]==')'){ close++; i++; } } if(open==close){ return 1; }return 0; } int main() { char s[100]="(()())."; if(is_correct_brackets(s)){ printf("YES\n"); }else{ printf("NO\n"); } return 0; }
这段代码的功能是检查一个以点号结尾的字符串中,左括号和右括号的数量是否相等。如果相等就返回1(输出YES),否则返回0(输出NO)。

- 你的代码只检查了括号数量是否相等,但没有检查括号的顺序是否正确。例如,字符串")(()."中左右括号数量相等,但顺序是错误的,你的代码会错误地输出YES。
- 你需要考虑在遍历过程中,任何时候右括号的数量都不能超过左括号的数量。可以尝试在循环内增加一个条件判断,当close大于open时立即返回0。