给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
每个右括号都有一个对应的相同类型的左括号。
package com.lyj;
import org.junit.Test;
import java.util.Stack;
/**
* ClassName: kuohao
*
* @description:有效括号
* 思路:利用了是栈的特性:先进后出
* 1.创建一个Stack栈
* 2.如果遍历字符串出现 { ( [ 三种情况直接入栈
* 3.如果出现} ) ] 的情况,判断是否对应,如果,是,弹出栈一个字符,如果否返回false
* 4.如果栈空,返回false
* @author: LYJ
* @Create: 2023/6/22 22:14
* @Version: 1.0
* @return
*/
public class kuohao {
@Test
public void test01(){
System.out.println(isValid("{}{)}{}"));
}
public boolean isValid(String s){
int len = s.length();
Stack<Character> stack = new Stack<>();
for (int i = 0; i <len ; i++) {
char c = s.charAt(i);
switch (c){
case '{': case '(': case '[':
stack.push(c);
break;
case '}':
if (stack.empty()||stack.peek()!='{'){
return false;
}
stack.pop();
break;
case ')':
if(stack.isEmpty()||stack.peek()!='('){
return false;
}
stack.pop();
break;
case ']':
if (stack.isEmpty()||stack.peek()!='['){
return false;
}
stack.pop();
break;
}
}
return stack.isEmpty();
}
}