3.10 leetcode刷题记录
第20题 有效的括号
题目
给定一个只包括 ‘(’ ,’)’ , ‘{’ , ‘}’ , ‘[’ , ‘]’ 的字符串s,判断字符串是否有效。
有效字符串必须满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
解答
- 利用一个栈记录遍历到的左括号对应的右括号
- 当右括号出现,若栈顶与右括号一致则合法,反之不合法
import java.util.Stack;
public class Solution20 {
public static boolean isValid(String s){
Stack<Character> stack = new Stack<>();
for (int i = 0;i < s.length();i++){
char c = s.charAt(i);
if (c == '(')
stack.push(')');
else if (c == '[')
stack.push(']');
else if (c == '{')
stack.push('}');
else if (stack.isEmpty()||stack.pop() != c)
return false;
}//for
return stack.isEmpty();
}//isValid
public static void main(String[] args){
boolean valid = isValid("([{}])");
System.out.println(valid);
}
}
知识点
java Stack类 堆栈
-
创建Stack对象
Stack<Integer> s1 = new Stack<Integer>();
-
Stack对象的方法
s1.push(x);//把项压入堆栈顶部。 int p1 = s1.peek();//查看堆栈顶部的对象,但不从堆栈中移除它 System.out,println(s1.pop());//移除堆栈顶部的对象,并作为此函数的值返回该对象。 System.out.println(s1.isEmpty());//判断栈是否为空
toCharArray()
将字符串转换为字符数组。
菜鸟教程