数据结构之用栈来解决括号匹配问题(Java实现)

1.知识储备
数据结构之用栈来解决括号匹配问题(Java实现)_第1张图片
2.问题分析
数据结构之用栈来解决括号匹配问题(Java实现)_第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<String> chars= new Stack<String>();
	 //2.从左往右遍历字符串
	 for(int i=0;i<str.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;
	 }
  }
}

你可能感兴趣的:(经典程序,笔记,数据结构,算法,数据结构)