试编写一个算法从检查一个Java语言中的大括号方括号小括号是否配对,若能够全?

试编写一个算法从检查一个Java语言中的大括号方括号小括号是否配对,若能够全?,第1张

要编写用于检查 Java 程序中的大括号、方括号和圆括号是否正确匹配的算法,可以使用堆栈数据结构来跟踪代码中遇到的左大括号。例如,您可以使用以下步骤:

初始化空堆栈。

循环遍历 Java 程序中的字符,从第一个字符开始。

如果当前字符是左大括号(即、、或),则将其推送到堆栈上。{[(

如果当前字符是右大括号(即、或),则从堆栈中d出顶部元素。如果d出的元素与当前右大括号不匹配,则返回(指示大括号未正确匹配)。}])False

重复步骤 3 和 4,直到到达 Java 程序的末尾。

如果堆栈为空,则返回(指示大括号正确匹配)。否则,返回(表示大括号未正确匹配)。TrueFalse

此算法使用堆栈来跟踪 Java 程序中遇到的左大括号,并通过将右大括号与从堆栈中d出的相应左大括号进行比较来检查是否匹配。此方法可以处理大括号的任意嵌套结构,并将正确识别 Java 程序中的大括号是否正确匹配。

请注意,这只是一个示例算法,可能还有其他方法可以解决此问题。您可以尝试不同的方法来找到最适合您的解决方案。

java栈实现括号匹配,主要是使用栈队列算法,如下代码:

import java.util.Scanner

import java.util.Stack

/**

 * @author Owner

 * 

 */

public class Main {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in)

int n= sc.nextInt()//3条测试数据数据

Stack<Character> stack = null

while(n!=0){

//从控制台读入一个测试字符串[]() [(])

String str = sc.next()

//如果该输入字符串为奇数,说明不匹配

if(str.length() % 2 == 1){

System.out.println("No")

}else{

//说明字符是偶数

stack = new Stack<Character>()

//遍历第一条测试字符串[]() [(])

for(int i=0i<str.length()i++){

if(stack.isEmpty()){

//如果栈是空的

stack.push(str.charAt(i))

}else if(stack.peek() == '[' && str.charAt(i) == ']' || stack.peek() == '(' && str.charAt(i) == ')'){

//说明此时栈中字符不是空的,并且符合,

stack.pop()

}else{

stack.push(str.charAt(i))

}

}

if(stack.isEmpty()){

//如果栈是空的,说明括号匹配

System.out.println("Yes")

}else{

//说明栈不为空,括号不匹配

System.out.println("No")

}

}

n--

}

}

}

java--  匹配{[()]}

import java.util.ArrayList

import java.util.HashMap

import java.util.List

import java.util.Map

public class Test{

    //匹配()[]{}

public static boolean check(String expr){

if(expr==null || "".equals(expr)) return true

List<String> list=new ArrayList<String>()

Map<String,String>map=new HashMap<String,String>()

map.put("(", ")")

map.put("[", "]")

map.put("{", "}")

for(int i=0i<expr.length()i++){

String ch=expr.charAt(i)+""

if(map.keySet().contains(ch)){

list.add(ch)

}else if(map.values().contains(ch)){

if(list.isEmpty() || !ch.equals(map.get(list.get(list.size()-1)))){

return false

}else{

list.remove(list.size()-1)

}

}

}

return list.isEmpty()

}

public static void main(String[] args) {

System.out.println(check("{([])}"))

System.out.println(check("{a(b[c{e}f(s)])}"))

System.out.println(check("{([]]]])}"))

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8101171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存