博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网易2016实习笔试:括号匹配问题
阅读量:4286 次
发布时间:2019-05-27

本文共 1971 字,大约阅读时间需要 6 分钟。

问题描述

字符串值包含六种符号(){}[],输入任意字符串,判断括号是否匹配

package com.problem;/** * 网易实习: * 字符串值包含六种符号(){}[],输入任意字符串,判断括号是否匹配 * 提示:用栈实现 push() pop()方法 */import java.util.Stack;import java.util.Scanner;public class SymbolMatch {
public static void main(String[] args) { Scanner input = new Scanner(System.in); while(input.hasNext()) { String str = input.next(); boolean isMatch = isValid(str); System.out.println(isMatch); } input.close(); // 注意关闭资源 } public static boolean isValid(String str) { Character prev, current; Stack
stack = new Stack
(); for(int i = 0; i < str.length(); i++) { current = str.charAt(i); if (stack.empty()) { // 如果栈为空,入栈的字符为右括号,直接返回false,否则正常入栈 if (current.equals(')') || current.equals('}') || current.equals(']')) { return false; } else { stack.push(current); } } else { prev = stack.pop(); if (!match(prev, current)) { // 如果不匹配,且当前字符为右括号"(({]"形式,直接返回false if (current.equals(')') || current.equals('}') || current.equals(']')) { return false; } else { stack.push(prev); // 注意入栈顺序 stack.push(current); } } } } // 全部匹配完之后如果栈为空,则所有匹配完成,否则字符串不匹配 if (stack.empty()) { return true; } else { return false; } } // 判断成对的字符是否匹配 public static boolean match(Character a, Character b) { if (a.equals('(') && b.equals(')')) { return true; } else if (a.equals('{') && b.equals('}')) { return true; } else if (a.equals('[') && b.equals(']')) { return true; } else { return false; } }}

转载地址:http://buxgi.baihongyu.com/

你可能感兴趣的文章
java基础/map/hasmap/linkedhasmap/treemap/collections工具类
查看>>
java集合的总结
查看>>
java. tr'y--catch/IO流/file/
查看>>
C语言socket编程总结(一)getaddrinfo()函数详解
查看>>
C语言socket编程总结(二) inet_pton,/inet_ntop
查看>>
C语言socket编程总结(三) struct sockaddr_in /struct sockaddr_in6/struct addrinfo 结构体
查看>>
C语言socket总结(四)htonl/ntohl/ntohs/ntohs/
查看>>
C 语言socket编程基础/memset()
查看>>
C语言socket总结(五) memset()和bzero()
查看>>
C语言socket编程总结(六) / int socket(int domain, int type, int protocol)
查看>>
C语言socket编程总结(七)int socket/connect()/send()/recv()/close()/shutdown()/recvfrom
查看>>
C语言socket编程总结(八)bind()
查看>>
C语言socket编程(九)listen()
查看>>
C语言socket编程(十)a'c'cept()
查看>>
C语言socket编程(十一)CFNetworking框架/CFSocket////CFStream属于CoreFoundation
查看>>
java 基础IO/inputStream/outputStream/buffInputStrem/buffOutputStrem
查看>>
java 多线程一
查看>>
java基础/IO流/、序列化和反序列化、浅复制和深复制
查看>>
java基础/IO流(二)
查看>>
java/多线程二
查看>>