文字列かっこが一致するかどうかを判断する
2233 ワード
構想分析スタックモードを使用して、先進的な後出原理! 最初に入ってきた括弧が左括弧であるか否かを判断し、いいえ、直接エラー 最後にスタックに値が存在するか否かを判断する、存在する、直接エラー .
コードの例:
コードの例:
public Boolean getPairString(String pair) {
List pushPair = new ArrayList<>();
pushPair.add("{");
pushPair.add("(");
pushPair.add("[");
List popPair = new ArrayList<>();
popPair.add("}");
popPair.add("]");
popPair.add(")");
stack stack = new stack();
char[] chars = pair.toCharArray();
for (int i = 0; i < chars.length; i++) {
//
String aChar = String.valueOf(chars[i]);
if(!pushPair.contains(aChar) && !popPair.contains(aChar)) {
continue;
}
//
if(stack.list.size()==0&&popPair.contains(aChar)){
return false;
}
// ,
if (pushPair.contains(String.valueOf(chars[i]))) {
stack.push(chars[i]);
}
// ,
if (popPair.contains(String.valueOf(chars[i]))) {
String pair1 = getPair(String.valueOf(stack.pop()));
if (!aChar.equals(pair1)) {
return false;
}
}
}
if(stack.list.size()!=0){
return false;
}
return true;
}
public static String getPair(String pair) {
if ("{".equals(pair)) {
return "}";
}
if ("}".equals(pair)) {
return "{";
}
if ("[".equals(pair)) {
return "]";
}
if ("]".equals(pair)) {
return "[";
}
if ("(".equals(pair)) {
return ")";
}
if (")".equals(pair)) {
return "(";
}
return null;
}
class stack {
List