利用栈实现判断字符串中的括号是否都是配对的。
主要算法是依次读取字符串中的每一个字符,如果是左括号则将左括号压入栈中,如果是右括号则从栈中弹出最上面的字符,若两者不是同种括号或栈内已经没有字符就返回false,循环完成后返回true。
package com.example;
/**
* Created by XiaFF on 2014/11/18.
*
*/
public class Parentheses {
public static void main(String[] args){
String s="[()]{}{[()[]()]()}";
System.out.println(isComplete(s));
}
public static boolean isComplete(String s){
Stack<String> left=new Stack<String>();
while (!s.isEmpty()){
//取字符串首字母
String character=s.substring(0,1);
//剩余的字符串
s=s.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();
}
}
本文介绍了如何使用栈数据结构来判断字符串中的括号是否完整配对。通过遍历字符串,遇到左括号入栈,遇到右括号时检查栈顶元素是否与之匹配,不匹配或栈空则返回false。遍历结束后,若栈为空则说明括号完全配对,返回true。
1473

被折叠的 条评论
为什么被折叠?



