public static void main(String[] args) {
String str = "(][[[]fs{a}[]d][s[]][][d[]ds])";
char[] c = str.toCharArray();
Stack<Character> stack = new Stack<Character>();
for(int i = 0;i < c.length;i++){
if(c[i] == '(' || c[i] == '{' || c[i] == '['){
stack.push(c[i]);
} else{
if(!stack.isEmpty()){
//獲取棧頂元素
char stackTop = stack.peek();
if(stackTop == '(' && c[i] == ')'){
stack.pop();
continue;
} else if(stackTop == '{' && c[i] == '}'){
stack.pop();
continue;
} else if(stackTop == '[' && c[i] == ']'){
stack.pop();
continue;
} else if(((c[i] == ')' && stackTop != '(') || (c[i] == '}' && stackTop != '{') || (c[i] == ']' && stackTop != '['))){
//若是當前元素是')}]'這些括號,且棧頂元素不能與之配對,則該字符串中的括號也是不配對
stack.push(c[i]);
break;
}
} else if(c[i] == ')' || c[i] == '}' || c[i] == ']'){
//當棧中元素爲空時,當前元素爲這些括號時,則該字符串括號必定是不配對的
stack.push(c[i]);
break;
}
}
}
//循環完了只有若是棧中的元素爲空,則表示該字符串中的括號是配對的或者該字符串根本就沒有括號。
if(stack.isEmpty()){
System.out.println(true);
} else{
System.out.println(false);
}
}數組
第二種方法:字符串
一、首先遍歷該字符串,取出該字符串中的全部的括號存入到一個List或者數組中。List
二、遍歷該List或者數組,進行匹配,這樣就減小了其餘字符形成括號匹配的難度。循環