试编写一个算法从检查一个Java语言中的大括号方括号小括号是不是配对,若能够全?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试编写一个算法从检查一个Java语言中的大括号方括号小括号是不是配对,若能够全?相关的知识,希望对你有一定的参考价值。
要编写用于检查 Java 程序中的大括号、方括号和圆括号是否正确匹配的算法,可以使用堆栈数据结构来跟踪代码中遇到的左大括号。例如,您可以使用以下步骤:
初始化空堆栈。
循环遍历 Java 程序中的字符,从第一个字符开始。
如果当前字符是左大括号(即、、或),则将其推送到堆栈上。[(
如果当前字符是右大括号(即、或),则从堆栈中弹出顶部元素。如果弹出的元素与当前右大括号不匹配,则返回(指示大括号未正确匹配)。])False
重复步骤 3 和 4,直到到达 Java 程序的末尾。
如果堆栈为空,则返回(指示大括号正确匹配)。否则,返回(表示大括号未正确匹配)。TrueFalse
此算法使用堆栈来跟踪 Java 程序中遇到的左大括号,并通过将右大括号与从堆栈中弹出的相应左大括号进行比较来检查是否匹配。此方法可以处理大括号的任意嵌套结构,并将正确识别 Java 程序中的大括号是否正确匹配。
请注意,这只是一个示例算法,可能还有其他方法可以解决此问题。您可以尝试不同的方法来找到最适合您的解决方案。
配对,则输出 true,否则输出 false。
下面是一种可行的算法:
创建一个栈用于存储左括号,读入每个字符,对于每个字符:
如果字符是左括号,则将其压入栈中。
如果字符是右括号,则从栈中弹出一个左括号,检查这个左括号是否与当前右括号匹配。
如果栈为空,则检查结束。如果栈不为空,则输出 false。
如果检查结束时所有左括号都成功匹配,则输出 true。
代码示例如下:
public boolean checkMatching(String input)
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < input.length(); i++)
char c = input.charAt(i);
if (c == '(' || c == '[' || c == '')
stack.push(c);
else if (c == ')' || c == ']' || c == '')
if (stack.isEmpty())
return false;
char left = stack.pop();
if ((c == ')' && left != '(') || (c == ']' && left != '[') || (c == '' && left != ''))
return false;
return stack.isEmpty();
华为机试真题 Java 实现报文解压缩
目录
题目
为了提升数据传输的效率,会对传输的报文进行压缩处理。
输入一个压缩后的报文,请返回它解压后的原始报文。
压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。
注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。
输入描述:输入压缩后的报文:
1)不考虑无效的输入,报文没有额外的空格,方括号总是符合格式要求的;
2)原始报文不包含数字,所有的数字只表示重复的次数 n ,例如不会出现像 5b 或 3[8] 的输入;
输出描述:
解压后的原始报文
注:
以上是关于试编写一个算法从检查一个Java语言中的大括号方括号小括号是不是配对,若能够全?的主要内容,如果未能解决你的问题,请参考以下文章