题目:判断符号是否有效
eg:
“([)]”—>false “()”—>true “(){}[]”—>true
思路:如果是左括号,直接入栈;如果是右括号,判断栈是否为空或看栈顶元素是否是左括号。最后检查栈是否为空。
实现代码:
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
char[] sc=s.toCharArray();
for(int i=0;i<s.length();i++){
switch(sc[i]){
case ')':
if(stack.empty()||stack.pop()!='(')
return false;
break;
case ']':
if(stack.empty()||stack.pop()!='[')
return false;
break;
case '}':
if(stack.empty()||stack.pop()!='{')
return false;
break;
default:
stack.push(sc[i]);
}
}
return stack.empty();
}
栈:
括号问题是经典的栈的问题。
特点:先进后出,只能在一段进行操作。
可以使用的方法有:
clear():清空
isEmpty():是否为空
length():元素的个数
push(Object x):入栈
pop():出栈
display():打印(从栈顶到栈底)
Character:
是lang包里的类,可以不用声明就可以使用。
Character是类,char是基本数据类型。
在java中有三个类负责对字符的操作:Character、String、StringBuffer。其中Character是对单个字符进行操作,String是对一个字符序列进行操作,StringBuffer是对遗传字符进行操作。