解法:使用stack,左进右匹配,利用后进先出的特性
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean isValid (String s) {
// write code here
int len = s.length();
if(len<=1)
return false;
Stack<Character> stack = new Stack<>();
for(int i =0;i<len;i++){
if(isLeft(s.charAt(i)))
stack.push(s.charAt(i));
if(isRight(s.charAt(i)))
{
if(stack.isEmpty())
return false;
if(!isPatch(stack.pop(),s.charAt(i)))
return false;
}
}
if(!stack.isEmpty())
return false;
return true;
}
public boolean isLeft(char c){
if(c=='('||c=='{'||c=='[')
return true;
return false;
}
public boolean isRight(char c){
if(c==')'||c=='}'||c==']')
return true;
return false;
}
public boolean isPatch(char cl, char cr){
if((cl=='('&&cr==')')||(cl=='{'&&cr=='}')||(cl=='['&&cr==']'))
return true;
return false;
}
}