使用java中的栈,对输入的字符串如果是左边字符数组中的字符,则全部依次入栈;如果是右边字符数组中的字符,则将字符与出栈字符(需对栈进行为空判断)进行比较,如果数组索引一致则此符号关闭,继续下一个判断直至栈为空。java实现的代码如下:本文地址:http://www.04007.cn/article/911.html,未经许可,不得转载.
package com.stack; import java.util.Arrays; import java.util.Scanner; import java.util.Stack; public class TeskStack { //输入字符串 public static void main(String[] args) { //获取输入字符串 Scanner scanner = new Scanner(System.in); System.out.println("请输入一串包含([{}])的括号,以判断其是否闭合:"); String inputString = scanner.next(); //判断闭合 if(checkClose(inputString)){ System.out.println("字符串"+ inputString+":括号全部闭合."); }else{ System.out.println("字符串"+ inputString+":括号未闭合."); } } //判断括号是否闭合方法 public static Boolean checkClose(String string){ Character[] charLeft = {'(','[','{'}; Character[] charRight= {')',']','}'}; Stack stack = new Stack<Character>(); //在左边数组中的字符全部入栈;右边数组中的字符与出栈字符进行对比 for (int i=0; i<string.length(); i++){ System.out.println(stack); if( Arrays.asList(charLeft).contains(string.charAt(i))) { stack.push(string.charAt(i)); }else if( Arrays.asList(charRight).contains(string.charAt(i))){ if(stack.empty()){ return false; } if( Arrays.asList(charRight).indexOf(string.charAt(i)) != Arrays.asList(charLeft).indexOf(stack.pop())){ return false; } } } return stack.empty(); } }本文地址:http://www.04007.cn/article/911.html,未经许可,不得转载.
#程序执行结果如下本文地址:http://www.04007.cn/article/911.html,未经许可,不得转载.
请输入一串包含([{}])的括号,以判断其是否关闭: (()[]1{(32}[]-)()12 [] [(] [(, (] [(] [(, [] [(] [(] [(, {] [(, {, (] [(, {, (] [(, {, (] 字符串(()[]1{(32}[]-)()12:括号未关闭. #程序执行结果 请输入一串包含([{}])的括号,以判断其是否关闭: (()[]1{32}[]-)()12 [] [(] [(, (] [(] [(, [] [(] [(] [(, {] [(, {] [(, {] [(] [(, [] [(] [(] [] [(] [] [] 字符串(()[]1{32}[]-)()12:括号已关闭.本文地址:http://www.04007.cn/article/911.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/911.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |