1.思路:本题目可使用stack类进行解决,先将字符串化为字符数组,然后用for循环遍历往栈中放。
若栈为空,则push当前的字符数据,如果当前字符刚好和栈顶配对成一对括号,就弹出栈顶元素,进行下一次循环。这样的话可以保证就算两个括号中间还有别的元素,也可以进行配对。如果配对失败,就向栈中添加元素。
最后,如果for循环结束,栈中的数据为空,则说明案例全部可以配对,返回true,否则返回false;
2.代码: import java.util.*; public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isValid (String s) { // write code here if(s.length()%2!=0||s.length()==0) return false; char[] c=s.toCharArray();//字符串化为字符数组 Stack<Character> st=new Stack<>(); for(int i=0;i<c.length;i++){ if(st.empty()) st.push(c[i]); //判断是否可以配对为一对括号 else if(st.peek()=='{'&&c[i]=='}'||st.peek()=='('&&c[i]==')'||st.peek()=='['&&c[i]==']') st.pop(); else st.push(c[i]); } if(st.empty()) return true; return false; } }