题目
三种括号 []{}()
- 括号匹配规则:
- {{()[]}} 则为true;
- {[()}} 则为false 并打印出未匹配位置
思路
主要利用栈结构先进先出的特点,保存前一个待匹配的字符,跟当前字符做匹配。
代码
package nowcoder;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Stack;
/**
* 括号匹配
*/
public class ParenthesesMatch {
private static final Map<Character,Character> brackers = new HashMap<>();
static {
brackers.put(')', '(');
brackers.put(']', '[');
brackers.put('}', '{');
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNextLine()) {
String str = scanner.nextLine();
System.out.println(isMatch(str));
}
scanner.close();
}
private static boolean isMatch(String str) {
if(str == null) {
return false;
}
Stack<Character> stack = new Stack<>();
for (char ch : str.toCharArray()) {
if(brackers.containsValue(ch)) {
stack.push(ch);
} else if(brackers.containsKey(ch)){
if(stack.isEmpty()|| stack.pop() != brackers.get(ch)) {
return false;
}
}
}
return stack.empty();
}
}