题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解题思路:运用栈的入栈出栈来实现
代码:
class Solution {
public boolean isValid(String s) {
Stack stk=new Stack();
int l=s.length();
boolean n=true;
char[] chr = new char[l];
if(l%2!=0||l==0)
n=false;
for (int i = 0; i <l; i++)
{
chr[i] = s.charAt(i);
}
for (int i=0;i<l;i++)
{
if(chr[i]=='{'||chr[i]=='['||chr[i]=='('){
stk.push(chr[i]);
}else{
if(stk.empty()){
n=false;
stk.push(chr[i]);
}
if(chr[i]==']'){
if((char)stk.peek()=='['){
stk.pop();
}else{
n=false;
}
}
if(chr[i]=='}'){
if((char)stk.peek()=='{'){
stk.pop();
}else{
n=false;
}
}
if(chr[i]==')'){
if((char)stk.peek()=='('){
stk.pop();
}else{
n=false;
}
}
}
}
if(n==true){
if(stk.empty()){
n=true;
}else{
n=false;
}
}
return n;
}
}
另:在做题时出现了很多错误,我在思考问题方面思考的还不全面,以及感觉代码有冗杂的现象,未能改进