Java 有效字符串判断
转载请注明出处:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
用两种方法实现:
1 import java.util.HashMap;
2 import java.util.Map;
3 import java.util.Stack;
4
5 /**
6 * 判断有效字符串
7 */
8 public class EffectiveString {
9 /**
10 * 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
11 * <p>
12 * 有效字符串需满足:
13 * <p>
14 * 左括号必须用相同类型的右括号闭合。
15 * 左括号必须以正确的顺序闭合。
16 * 注意空字符串可被认为是有效字符串。
17 *
18 * @param args
19 */
20 public static void main(String[] args) {
21 // 字符串有效时,两个特殊符号进行相互的匹配
22 boolean result1 = isValid1("()[]{}");
23 System.out.println(result1);
24 boolean result2 = isValid2("()[]{}");
25 System.out.println(result2);
26 }
27
28 public static boolean isValid1(String testStr) {
29 testStr = testStr.replaceAll("\\(\\)", "");
30 testStr = testStr.replaceAll("\\[\\]", "");
31 testStr = testStr.replaceAll("\\{\\}", "");
32 System.out.println(testStr);
33 char[] charArr = {'(', ')', '{', '}', '[', ']'};
34 for (int i = 0; i < charArr.length; i++) {
35 int num = testStr.indexOf(charArr[i]);
36 System.out.println(num);
37 if (num > 0) {
38 return false;
39 }
40 }
41 return true;
42 }
43
44 public static boolean isValid2(String str) {
45 Stack<Character> stack = new Stack<>();
46 Map<Character, Character> symbolMap = new HashMap<>();
47 symbolMap.put(']', '[');
48 symbolMap.put(')', '(');
49 symbolMap.put('}', '{');
50 char[] charArray = str.toCharArray();
51 for (int i = 0; i < charArray.length; i++) {
52 if (charArray[i] == '[' || charArray[i] == '(' || charArray[i] == '{') {
53 stack.push(charArray[i]);
54 } else {
55 Character value = symbolMap.get(charArray[i]);
56 if (stack.isEmpty()) {
57 return false;
58 }
59 if (value != stack.pop()) {
60 return false;
61 }
62 }
63 }
64 System.out.println(stack);
65 return stack.isEmpty();
66 }
67
68 }
Java 有效字符串判断的更多相关文章
- java String字符串判断
判断空字符串:StringUtils.isBlank StringUtils.isBlank(null) = true StringUtils.isBlank("") = true ...
- java中字符串的非空判断
问题如下:在java 中 字符串为null 如何判断String str;if(str==null) ??str.equal("null") ?? 答:我觉得应该搞清楚字符串对象和 ...
- Java空字符串与null的区别和判断字符串是否为空的方法
Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...
- Java 中字两个字符串判断是否相等(转载)
java中判断字符串是否相等有两种方法:1.用"=="运算符,该运算符表示指向字符串的引用是否相同,比如: String a="abc";String b=&q ...
- Java String字符串/==和equals区别,str。toCharAt(),getBytes,indexOf过滤存在字符,trim()/String与StringBuffer多线程安全/StringBuilder单线程—— 14.0
课程概要 String 字符串 String字符串常用方法 StringBuffer StringBuilder String字符串: 1.实例化String对象 直接赋值 String str=& ...
- Java:字符串类String的功能介绍
在java中,字符串是一个比较常用的类,因为代码中基本上处理的很多数据都是字符串类型的,因此,掌握字符串类的具体用法显得很重要了. 它的主要功能有如下几种:获取.判断.转换.替换.切割.字串的获取.大 ...
- Java入门篇(五)——Java的字符串/String类
前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
- Java进阶(二十一)java 空字符串与null区别
java 空字符串与null区别 1.类型 null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ; ""表示的是一个空字符串, ...
- 由一篇吐槽对String空字符串判断的文章所引发的碎碎念
一.起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
随机推荐
- Linux的一些的常用命令
小杰笔记: 记录一下Linux的一些常见命令: 1:Linux关机与重启的命令: shutdown:关机 shutdown -h 30 30秒后关机 reboot 重启 sync:将数据由内存同步到硬 ...
- Win10笔记本开启热点让手机上网
Win10开启热点让手机上网,笔记本电脑开启热点,笔记本电脑开启WiFi,手机连接笔记本电脑热点上网. 1.前提条件:笔记本电脑网线联网,笔记本电脑支持热点 2.胆子要大,不怕公司网管统计发现你的电脑 ...
- Java 并发编程(二 )Thread
线程状态 线程一般的状态转换图如下: 在线程生命周期中存在的状态解释如下: New(初始化)状态 此时线程刚刚被实例化,可以通过调用 start() 方法来启动这个实例化的的线程,使其状态转变成为 R ...
- APM市场冰火两重天,或许只是行业无处安放的焦虑
近两年来,无论从国内还是到国外,市场出现一种APM批判的论调,甚至有"传统APM已经落后"的个别声音出现. 可放眼望去,国外主流APM厂商如:DATADOG. Dynatrace. ...
- 如何延长window11更新信息?
前言 日常使用电脑的时候,我们总是会遇到一个很常见的问题:如何关闭windows自动更新. 解决方法一: 暂停更新 解决方法二: 打开注册表: 运行 => regedit 进入: HKEY_LO ...
- HDU 4893 线段树延迟标记
原题链接 题意 初始有一长度为n,全为0的序列 每次我们可以对这个序列进行三种操作: 1.将某个位置的数加上d 2.输出某个区间的和 3.将某个区间内每个数字变为与其最接近的斐波那契数,如果有两个最相 ...
- .NET周报【10月最后一期 2022-11-01】
精选要闻 .NET 7 NativeAOT比.NET单文件发布文件小80% https://twitter.com/JamesNK/status/1584919726861737984?s=20&am ...
- 当自动驾驶遇到5G,会擦出怎样的火花?这篇文章说明白了
作者:华为云EI专家厉天一 摘要:无人驾驶是通过自动驾驶系统,部分或完全的代替人类驾驶员,安全地驾驶汽车.汽车自动驾驶系统是一个涵盖了多个功能模块和多种技术的复杂软硬件结合的系统.本文将基于5G技术来 ...
- 教你VUE中的filters过滤器2种用法
摘要:Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化. 本文分享自华为云社区<VUE中的filters过滤器用法>,作者:小小张自由--张有博. 前言 Vue.js 允许 ...
- SpringBoot WebService 及 注意项
SpringBoot WebService 源代码:https://gitee.com/VipSoft/VipWebService SpringBoot 版本 <version>2.3.0 ...