题目描述:
给定一个字符串,里边可能包含“()”、"{}"、“[]”三种括号,请编写程序检查该字符串的括号是否成对出现。
输出:
true:代表括号成对出现并且嵌套正确,或字符串无括号字符。
false:未正确使用括号字符。
思路:同leetcodehttps://blog.youkuaiyun.com/orangefly0214/article/details/82622480
括号匹配问题要用到数据结构中的栈。
实现(python):
#-*- coding: utf-8 -*-
dict={'}':'{',']':'[',')':'('}
def check(str):
stack=[]
for char in str:
if char in dict.values():
stack.append(char)
elif char in dict.keys():
if stack[-1]==dict[char]:
stack.pop()
else:
return False
return not stack
if __name__ == '__main__':
print check('abc[12(2{+3)}]')
java实现:
import java.util.HashMap;
import java.util.Stack;
public class bracketDemo {
private boolean check(String str){
HashMap<Character, Character> map=new HashMap<>();
map.put('}','{');
map.put(']', '[');
map.put(')', '(');
Stack<Character> s=new Stack<>();
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(map.containsValue(c)){
s.push(c);
}else if(map.containsKey(c)){
if(!s.isEmpty()&&s.peek()==map.get(c)){
s.pop();
}else{
return false;
}
}
}
return s.isEmpty();
}
public static void main(String[] args) {
bracketDemo bd=new bracketDemo();
System.out.println(bd.check("abc[12(2+3)]"));
}
}
参考:https://blog.youkuaiyun.com/liereli/article/details/79932000