当前位置:网站首页>leetcode-括号有效性问题
leetcode-括号有效性问题
2022-07-28 14:31:00 【pshdhx_albert】
题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
输入:s = "()" 输出:true
输入:s = "()[]{}"
输出:true输入:s = "(]" 输出:false
输入:s = "([)]" 输出:false
输入:s = "{[]}"
输出:true思路描述
有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个【左括号放入栈顶】。
当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。
如果不是相同的类型,或者栈中并没有左括号,那么字符串 ss无效
注意:(( 和 )) 的特殊情况。
代码
package com.pshdhx.Algorithm.easy;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/**
* @author pshdhx
* @date 2022-01-12 15:26
* @Des 有效的括号
*/
/**
* 思路描述:有一个相同类型的右括号将其闭合。由于后遇到的左括号要先闭合,因此我们可以将这个【左括号放入栈顶】。
* 当我们遇到一个右括号时,我们需要将一个相同类型的左括号闭合。此时,我们可以取出栈顶的左括号并判断它们是否是相同类型的括号。
* 如果不是相同的类型,或者栈中并没有左括号,那么字符串 ss无效
* 注意:(( 和 )) 的特殊情况。
*/
public class Brackets {
Boolean isValid(String s) {
//奇数直接返回
if(s.length() % 2 == 1){
return false;
}
//左括号入栈
//有括号入队列 "{[]}"
Stack<Character> stack = new Stack<>();
if(s.charAt(0) == ')' || s.charAt(0) == ']' ||s.charAt(0) == '}'){
return false;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('
||s.charAt(i)=='['
||s.charAt(i)=='{'){
stack.push(s.charAt(i));
}else if(stack.size()==0){ //解决 ()))
return false;
}else if(s.charAt(i)==')' && stack.size()>0){
Character left = stack.pop();
if(left != '('){
return false;
}
}else if(s.charAt(i)== ']' && stack.size()>0){
Character left = stack.pop();
if(left != '['){
return false;
}
}else if(s.charAt(i)== '}' && stack.size()>0){
Character left = stack.pop();
if(left != '{'){
return false;
}
}
}
//解决 ((这种
if(stack.size()>0){
return false;
}
return true;
}
public static void main(String[] args) {
Brackets b = new Brackets();
Boolean valid = b.isValid("()))");
System.out.println(valid);
}
}
边栏推荐
- [jspwiki]jspwiki installation deployment and configuration
- Idea debugging burpsuit plug-in
- 树上启发式合并简单题
- Svg verification code recognition experience
- Crmeb v4.3 deployment process
- Gfpgan blurred photo repair artifact
- Understanding of entropy and cross entropy loss function
- What functions will be added to crmeb Standard Version 4.4
- 听说crmeb多商户增加了种草功能?
- Learn PHP reflection classes from ThinkPHP remote code execution
猜你喜欢

What are the functions to be added in crmeb pro2.2?

DAY:7/11

I heard that many merchants of crmeb have added the function of planting grass?

听说crmeb多商户增加了种草功能?

Install MOSEK, license installation location search

MySQL 8.0 common (continuous update)

DataTables warning: table id=campaigntable - cannot reinitialize datatable. solve

代码比较干净的多商户商城系统

Celery related

Pyinstaller packages py as an EXE file
随机推荐
Jds-12 time relay
crmeb 标准版window+phpstudy8安装教程(二)
JOGY-61电压继电器
crmeb标准版附带的客服系统
Crmeb Standard Version window+phpstudy8 installation tutorial (I)
Apple iPhone app icon hidden how to retrieve and restore the hidden app icon displayed on the iPhone iPhone desktop to the iPhone iPhone iPhone desktop?
[jspwiki]jspwiki installation deployment and configuration
Publish raspberry pie web page with cpolar (apache2 installation test)
Tencent interview -- please design a thread pool to implement sequential execution
Crmeb knowledge paid manual installation tutorial
Grpc frequently asked questions
ERROR:bokeh.core.validation. check:E-1001 (BAD_COLUMN_NAME)
crmeb 标准版window+phpstudy8安装教程(三)
Table lock query and unlocking in SQL development part 1
全开源免费的客服系统来了
Volatile principle
2022-07-28日报:Science:AI设计蛋白质再获突破,可设计特定功能性蛋白质
Leetcode - number of operations, non repeating numbers, diagonal traversal, Joseph Ring
Crmeb v4.3 deployment process
Ry-d1/1 voltage relay