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;
}
}


京公网安备 11010502036488号