栈和队列基本知识
题目三
看到题目的第一想法:
第一想法是可以用栈实现,这个题目比较经典,但是细节是真不记得了,直接看了代码随想录的思路
看了代码随想录的想法:
思路差不多,但是就是判断不匹配的情况还不少.
实现的时候需要注意一些字符串数组,字符串转化,栈,列表的api操作.
Arrays.asList("(","[","{");
public static boolean isValid(String s){
List<String> LEFT = Arrays.asList("(","[","{");
List<String> RIGHT = Arrays.asList(")","]","}");
char[] charString = s.toCharArray();
Stack<String> stack = new Stack<>();
for (char c : charString) {
String in = String.valueOf(c);
if (LEFT.contains(in)) {
stack.push(in);
continue;
}
if (!stack.isEmpty()) {
String top = stack.peek();
if (LEFT.indexOf(top) != RIGHT.indexOf(in)) {
return false;
}else {
stack.pop();
}
} else {
return false;
}
}
return stack.empty();
}
题目四
这道题比较简单,一看就能想到思路了,细节上跟上一题一样,需要注意各种字符串操作.