数据结构–仅用一个变量解决括号匹配问题
问题:
从键盘输入一个包含‘(’和‘)’的字符串,编写程序判断括号是否匹配。
输入:“((()()())))”
输出:若ok == TRUE ,则输出”括号匹配“;否则,若ok == FALSE,输出”括号不匹配“。
基本思路
1.定义一个变量brackeMatch并赋初始值为0:
2.遇到左括号,brackeMatch++;
3.遇到右括号,brackeMatch–并且判断brackeMatch是否<0. 若<0,则括号失配。(左括号<右括号)
4.处理完所有字符后,若brackeMatch非0,则括号失配.(左括号>右括号)
C代码:
#include <stdio.h>
typedef unsigned char boolean;
#define TRUE 1
#define FALSE 0
boolean isBrackeMatch(const char *str);
boolean isBrackeMatch(const char *str) {
int brackeMatch = 0;
for(int index=0;str[index];index++){
if('(' == str[index]){
brackeMatch++;
}else if(')' == str[index]){
if(--brackeMatch < 0){
return FALSE;
}
}
}
return 0 == brackeMatch;
}
int main(){
char str[80];
boolean ok;
printf("Input the str:");
gets(str);
ok = isBrackeMatch(str);
if(ok){
printf("括号匹配!\n");
}else{
printf("括号不匹配!\n");
}
return 0;
}
通过上述操作,仅用一个变量即可解决括号匹配问题!