前言
复习数据结构的时候,遇到的题目。
括号匹配是利用了栈先进后出的特性,除了定义栈的数据结构来实现,还可以用数组来实现
一、实现流程图
(王道)—
二、代码实现
/**
* 括号匹配
* @param data 需要进行匹配的char数组
* @return 返回true表示匹配成功;否则匹配失败
*/
public static boolean bracketCheck(char[] data) {
char[] temp = new char[data.length]; //存放左括号
int top = -1; //左括号数组的栈顶指针
for (int i = 0; i < data.length; i++) {
if (data[i] == '(' || data[i] == '{'|| data[i] == '['){ //判断是否为左括号
temp[i] = data[i]; //存放进入左括号char数组
top++;
continue;
}
if (data[i] == ')' && temp[top] == '('){ //匹配小括号
top--; //匹配成功 出栈
}else if (data[i] == '}' && temp[top] == '{'){ //匹配花括号
top--;
}else if (data[i] == ']' && temp[top] == '['){ //匹配大括号
top--;
}else return false;
}
if (top != -1){ //判断是否有未匹配成功的左括号
return false;
}
return true;
}