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空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
随机推荐
- Odoo16—权限控制
odoo的权限控制是通过用户组来实现的,在用户组中配置控制权限,然后再添加用户到用户组中,从而实现对用户的访问和操作权限控制.一个用户可以属于多个用户组,用户最终的权限范围取决于所属用户组权限的并集. ...
- flask的cookie和session会话保持
Cookie 获取请求cookie 通过请求对象中的cookies属性可以获取cookie. 实例: from flask import Flask, request @app.route(" ...
- 探究vue的diff算法
1.diff算法是什么? diff算法是一种通过**同层的树节点**进行比较的高效算法 Diff 算法探讨的就是虚拟 DOM 树发生变化后,生成 DOM 树更新补丁的方式.对比新旧两株虚拟 DOM 树 ...
- AD域配置和域用户登录
DSC控制台连接域服务器的基准DN选中域服务器会显示 客户端电脑无法连接服务器时将DNS填写成域服务器IP,并将网络改成自动获取
- Python——第二章:集合 Set
set集合,集合的特点是无序的 写法:s = {1,2,3} 但是如果内容是空的,它不是set集合,而是dict字典 s = {} print(type(s)) #输出结果 <class 'di ...
- Ubuntu 下建立 eclipse 启动图标,解决ADT没有菜单栏问题(转载)
原文地址 怎么在这应用程序里边建立图标$sudo gedit /usr/share/applications/Eclipse.desktop输入以下代码 [Desktop Entry]Name=Ecl ...
- 一文了解Vprix容器流媒体平台和传统云桌面的区别、优劣势
在当今数字化时代,随着云计算和远程办公的兴起,云桌面项目成为了提升工作效率和灵活性的重要工具.云桌面项目通过将用户的桌面环境和应用程序虚拟化,为用户提供了随时随地访问个人工作环境的便利.本文将介绍Vp ...
- 揭秘Spring事务失效场景分析与解决方案
在Spring框架中,事务管理是一个核心功能,然而有时候会遇到事务失效的情况,这可能导致数据一致性问题.本文将深入探讨一些Spring事务失效的常见场景,并提供详细的例子以及解决方案. 1. 跨方法调 ...
- <Python全景系列-1> Hello World,1分钟配置好你的python环境
<从此开始:1分钟配置好你的python环境> 欢迎来到我们的系列博客<Python360全景>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题, ...
- 神经网络入门篇:详解深层网络中的前向传播(Forward propagation in a Deep Network)
深层网络中的前向传播 先说对其中一个训练样本\(x\)如何应用前向传播,之后讨论向量化的版本. 第一层需要计算\({{z}^{[1]}}={{w}^{[1]}}x+{{b}^{[1]}}\),\({{ ...