题解 | #有效括号序列#
有效括号序列
https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2
代码主要逻辑如下:
for循环去遍历这个字符串
需要区分是是前括号还是后括号,前括号需要用栈存起来,栈的特点是先进后出、所以可以先拿到最后一个前括号。
识别到后括号,需要从栈中拿出一个 元素和 这个括号进行匹配,查看是否是同一个括号类型,如果是则继续,如果不是返回fasle
执行完整个训练后,判断栈是否有空余,如果有空余则证明前括号和后括号的数目不对,如果没有空余,并且前面的匹配没有报错,则证明是全部匹配成功,返回true
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
Stack<Character> stack = new Stack<Character>();
for(int i =0;i<s.length();i++)
{
if(s.charAt(i)=='('|| s.charAt(i)=='[' || s.charAt(i)=='{')
{
stack.push(s.charAt(i));
}
else{
if(stack.isEmpty()){
return false;
}
Character character =stack.pop();
if(s.charAt(i) == '}' && character == '{')
{
continue;
}
else if(s.charAt(i) == ']' && character == '[')
{
continue;
}
else if(s.charAt(i) == ')' && character == '(')
{
continue;
}
else{
return false;
}
}
}
if(!stack.isEmpty())
{
return false;
}
return true;
}
}

