java实现判断一个字符串中的数据是否有效(括号是否对称)
首先介绍下Stack栈
Stack简介
Stack是栈。它的特性是:先进后出(FILO, First In Last Out)。
package com.company;
import java.util.Stack;
public class Main {
public static void main(String[] args){
String string="(){()}[}}}";
System.out.println(tfString(string));
}
public static boolean tfString(String string){
Stack<String> left=new Stack<String>();
if(string.length()%2!=0){
return false;
}
while (!string.isEmpty()){
//取字符串首字母
String character=string.substring(0,1);
//剩余的字符串
string=string.substring(1);
if(character.equals("{")||character.equals("[")||character.equals("(")){
//如果是左括号,则压入栈
left.push(character);
}else if(character.equals(")")||character.equals("]")|| character.equals("}")){
//首先检查栈是否为空
if(left.isEmpty())
return false;
//弹出最后的左括号
String leftChar=left.pop();
//检查左右括号是否匹配
if(character.equals(")")){
if(!leftChar.equals("("))
return false;
}else if(character.equals("]")){
if(!leftChar.equals("["))
return false;
}else if(character.equals("}")){
if(!leftChar.equals("{"))
return false;
}
}
}
//栈中没有有左括号
return left.isEmpty();
}
}