问题
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
说明
思路较为简单,做一个先进后出的栈即可。
代码
public class _20ValidParentheses{
public boolean isvalid(String s){
String valid = "";
for(int i = 0; i< s.length();i++){
//String char = new String.valueOf(s.charAt(i));
String var = String.valueOf(s.charAt(i));
if(var.equals("(")){
valid = valid +"(";
}else if(var.equals(")")){
if(valid.length()==0) return false;
if (String.valueOf(valid.charAt(valid.length()-1)).equals("(")) {
valid = valid.substring(0,valid.length()-1);
}else {
return false;
}
}else if(var.equals("{")){
valid = valid +"{";
}else if(var.equals("}")){
if(valid.length()==0) return false;
if (String.valueOf(valid.charAt(valid.length()-1)).equals("{")) {
valid = valid.substring(0,valid.length()-1);
}else {
return false;
}
}else if(var.equals("[")){
valid = valid +"[";
}else if(var.equals("]")){
if(valid.length()==0) return false;
if (String.valueOf(valid.charAt(valid.length()-1)).equals("[")) {
valid = valid.substring(0,valid.length()-1);
}else {
return false;
}
}else{
System.out.println("invalid charactor");
}
}
if (valid.length()!=0) {
return false;
}else{
return true;
}
}
public static void main(String[] arg){
_20ValidParentheses ValidParentheses = new _20ValidParentheses();
String s1 = "()";
String s2 = "()[]{}";
String s3 = "(]";
String s4 = "([)]";
String s5 = "{[]}";
/****/
System.out.println(ValidParentheses.isvalid(s1));
System.out.println(ValidParentheses.isvalid(s2));
System.out.println(ValidParentheses.isvalid(s3));
System.out.println(ValidParentheses.isvalid(s4));
System.out.println(ValidParentheses.isvalid(s5));
}
}