算法题——————————————输入一段java代码判断这段代码(){}[]使用是否标准

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

思路:

需要的数据结构一个栈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();
	}
}

上边所有内容均是个人所写,有错也在所难免,若博友提出,立马更改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值