Java算法_有效的括号
问题描述:
给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。
算法思路:代码文档,算法解析,私得
/**
* 2 * @Author: LJJ
* 3 * @Date: 2023/7/14 9:24
* 4
*/
import java.util.Stack;
public class ValidParentheses {
public static boolean isValid(String s){
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()){
if (c=='('|| c=='[' || c =='{'){
stack.push(c);
}else if (c==')'||c==']'||c=='}'){
if (stack.isEmpty()|| !isMatching(stack.pop(),c)){
return false;
}
}
}
return stack.isEmpty();
}
private static boolean isMatching(char left,char right){
return (left=='('&&right==')')|| (left=='['&&right==']') ||(left=='{'&&right=='}');
}
public static void main(String[] args) {
String s1 = "()"; // true
String s2 = "()[]{}"; // true
String s3 = "(]"; // false
String s4 = "([)]"; // false
String s5 = "{[]}"; // true
System.out.println(isValid(s1));
System.out.println(isValid(s2));
System.out.println(isValid(s3));
System.out.println(isValid(s4));
System.out.println(isValid(s5));
}
}