思路:
需要的数据结构一个栈stack,输入字符串str,截取字符串s1
1.首先截取字符串的第一个s1,然后str赋值为余下字符串str.subString(1,dtr.length);
2.判断s1是否为"(","{","[",是则入栈
3.判断s1是否为")","}","]",a.是,判断栈顶元素是否为所对应的"(","{","[",是则出栈,不是跳出循环
b.不是,继续循环
4.重复123只当str==null,跳出循环。
package Test;
import java.util.Stack;
public class StackDemo {
private Stack<String> stack;
public StackDemo() {
stack = new Stack<>();
}
public boolean inspect(String str) {
String s1 = null;
//当字符串为空的时候,str已经计算结束
while (str != null) {
s1 = str.substring(0, 1);
if (s1 != null) {
if (s1.equals("{")) {
stack.push(s1);
}
//两个if不并列原因
//当你判断是"}",有两个可能一种都对应的"{",一种没有,当没有说明这段程序就有了问题
if (s1.equals("}")) {
if (stack.peek().equals("{")) {
stack.pop();
} else {
break;
}
}
if (s1.equals("(")) {
stack.push(s1);
}
if (s1.equals(")")) {
if (stack.peek().equals("(")) {
stack.pop();
} else {
break;
}
}
if (s1.equals("[")) {
stack.push(s1);
}
if (s1.equals("]")) {
if (stack.peek().equals("[")) {
stack.pop();
} else {
break;
}
}
}
if (str.length() == 1) {
break;
} else {
str = str.substring(1, str.length());
}
}
return stack.empty();
}
}
上边所有内容均是个人所写,有错也在所难免,若博友提出,立马更改

本文介绍了一种利用栈数据结构来验证字符串中括号是否正确匹配的方法。通过逐个检查字符串中的字符,将左括号压入栈中,遇到右括号时检查其与栈顶元素是否匹配并弹出,最终栈为空则表示括号匹配正确。
763

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



