【经典程序|数据结构之用栈来解决括号匹配问题(Java实现)】1.知识储备
文章图片
2.问题分析
文章图片
3.代码实现
package Stack;
public class BracketMatchTest {
public static void main(String[] args) {
String str="(长安城(上海)()";
boolean match=isMatch(str);
System.out.println(str+"中的括号匹配情况:"+match);
}
/*
* 判断str中的括号是否匹配
* str括号组成的字符串
* 如果匹配则返回true,不匹配则返回false
*/
public static boolean isMatch(String str){
//1.创建栈对象,用来存储左括号
Stack chars= new Stack();
//2.从左往右遍历字符串
for(int i=0;
i.length();
i++){
String character=str.charAt(i)+"";
//获取当前字符,因为此时我们的栈的泛型是string类型的,所以我们需要把当前字符转换成string类型
//3.判断当前字符是否为左括号,如果是,则把字符放入到栈中
if(character.equals("(")){
chars.push(character);
}
//4.继续判断当前字符是否为右括号,如果是,则从栈中弹出一个左括号,并判断弹出的结果是否为null,如果为nll,证明没有匹配的左括号,
//如果不为null,则证明有匹配的左括号
else if(character.equals(")")){
String pop=chars.pop();
if(pop==null){
return false;
}
}
}
//5.判断栈中还有没有剩余的左括号,如果有,则证明不匹配
if(chars.size()==0){
return true;
}else{
return false;
}
}
}
推荐阅读
- 线性表|大学数据结构之顺序表的实现(Java版本)
- 经典程序|数据结构之双向链表(Java实现)
- 数据结构|数据结构之单链表的实现(Java版本)
- 经典程序|利用C语言创建数据结构中链表的遍历及其基本操作
- 动态规划|LeetCode 300.最长递归子序列
- leetcode|LeetCode 94. 二叉树的中序遍历
- 数据结构与算法|4 单循环链表解决约瑟夫问题
- 数据结构|数据结构(循环链表解决约瑟夫问题)
- 笔记|如何给网站安装SSL证书()