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空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
随机推荐
- 华企盾DSC客户端无法连接以及无法切换工作模式常见处理方法
先查看客户端日志见文档<客户端连接服务器问题和加密进程初步判断>常见的 1.检查客户端连接服务器配置是否正确 2.telnet服务器的IP和端口是否通 3.客户端日志中显示client i ...
- 华企盾DSC启动服务器提示“发生系统错误5”
解决方法:没有管理员权限 导致,需要以管理员权限运行服务器安装包,覆盖安装一下
- NetSuite 开发日记 —— 估价单(Estimate)新建项目(Project)自动填入项目字段
Background 用户在估价单(Estimate)点击「项目」字段旁边+按钮新建项目(Project),在项目的自定义字段中自动填入估价单ID 用户在项目记录存在切换自定义表格行为 Analysi ...
- 如何屏蔽各大AI公司爬虫User Agent
罗列各大AI公司Scraper爬虫Crawler使用的User Agent,教您如何在robots.txt里面屏蔽这些爬虫的访问,禁止它们下载您的网站内容以训练 AI 模型,保护数据,降低带宽,防止宕 ...
- ElasticSearch之cat count API
读取当前存储的记录的数量. 命令样例如下: curl -X GET "https://localhost:9200/_cat/count?v=true&pretty" -- ...
- Python——第五章:处理异常try、except、else、finally
处理异常try 和 except 在 Python 中,try 和 except 语句用于处理异常(错误).通过使用这两个关键字,你可以编写代码来捕获和处理可能发生的异常,以保持程序的稳定性. try ...
- 论文分享丨Holistic Evaluation of Language Models
摘要:该文为大模型评估方向的综述论文. 本文分享自华为云社区<[论文分享]<Holistic Evaluation of Language Models>>,作者:DevAI. ...
- 手把手带你入门加密算法的Python实现
摘要:一个简单的md5加密算法,带你解开所谓"加密"过程的神秘面纱. 一个简单的md5加密算法,非常适合新手练习 链接:> aHR0cDovL3d3dy5jaHVjaHVqa ...
- 一文带你了解GaussDB(DWS) 的Roach逻辑备份实现原理
摘要:Roach工具是GaussDB(DWS)推出的一款主力的备份恢复工具,包含物理与逻辑备份两种主要能力,本文着重于讲解Roach逻辑备份的实现原理. 一.简介 在大数据时代,数据的完整和可靠性成为 ...
- 总是记不住java的IO流用法?用N个问题教你掌握java IO流
摘要:Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了.在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用,更加难 ...