java---括號匹配


import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;

/*
*括號匹配
* 1.用棧實現,如果讀取字符為左括號,入棧
* 2.如果讀取字符為右括號
* 棧為空,返回false
* 棧不為空,和棧頂比較,是否匹配,匹配出棧一次,不匹配返回false
* 3.最后棧不為空,返回false,棧為空返回true
*/
public class BracketMatch {
/*
*功能描述
* @author lkr
* @date 2019/3/3
* @param str
* @return 是否匹配
*/
public static boolean isMatch(String str){
//定義左右括號匹配關系
Map<Character,Character> map = new HashMap<Character,Character>();
map.put(')','(');
map.put('}','{');
map.put(']','[');

int length = str.length();//字符串長度
LinkedList<Character> stack = new LinkedList<Character>();
for (int i = 0;i<length;i++){
//如果為左括號,入棧
if(map.containsValue(str.charAt(i))){
stack.push(str.charAt(i));
}
//如果為右括號,判斷棧是否為空
if(map.containsKey(str.charAt(i))){
if(stack.isEmpty()){
return false;
}
else if (stack.peek() == map.get(str.charAt(i))){
stack.pop();
}
else return false;
}
}
//尋循環遍歷完成判斷棧是否為空
//return stack.isEmpty()?true:false;
if(stack.isEmpty()){
return true;
}
else return false;

}


public static void main(String[] args){
String str1 = "{[(2+4)+(3-5)/9]*4+1}*{[(2-4)+(3-5)*9]*(4+1)}";
String str2 = "(){}";
String str3 = "(){[}";
String str4 = "(){[)}";
System.out.println(isMatch(str1));
System.out.println(isMatch(str2));
System.out.println(isMatch(str3));
System.out.println(isMatch(str4));

}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM