当前位置:网站首页>[leetcode] 20. Valid brackets
[leetcode] 20. Valid brackets
2022-07-07 23:48:00 【Xiaoqu classmate】
20、 Valid parenthesis
subject :
Given one only includes ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ String s , Determines whether the string is valid .
Valid string needs to meet :
Opening parentheses must be closed with closing parentheses of the same type .
The left parenthesis must be closed in the correct order .
Example 1:
Input :s = "()"
Output :true
Example 2:
Input :s = "()[]{}"
Output :true
Example 3:
Input :s = "(]"
Output :false
Example 4:
Input :s = "([)]"
Output :false
Example 5:
Input :s = "{[]}"
Output :true
Tips :
1 <= s.length <= 10^4
s Brackets only ‘()[]{}’ form
Their thinking :
- First, if the string can form valid parentheses , Then the length must be even
- We can iterate through strings , If the left bracket is encountered, it will be temporarily stored , Expect a closing parenthesis to match it
- If a closing bracket is encountered, check whether it matches the latest temporary bracket .
- This is consistent with the first in and last out characteristics of stack data structure . So we can prepare a stack to store bracket pairs
- When traversing a string , If you encounter an open bracket, put it on the stack , If the right bracket is encountered, judge whether the right bracket can match the top element of the stack , At the end of the loop, it is also necessary to determine whether the stack is empty , If it's not empty , Is not a string matching valid parentheses
Complexity analysis :
Time complexity :O(n), among n Is string s The length of .
Spatial complexity :O(n+∣Σ∣), among Σ Represents the character set , The string in this question only contains 6 Kind bracket ,∣Σ∣=6. The number of characters in the stack is O(n), The space used by the hash table is O(∣Σ∣), Add to get the total space complexity .
Specific code :
class Solution {
public boolean isValid(String s) {
int n = s.length();
if (n % 2 == 1) {
return false;
}
Map<Character, Character> pairs = new HashMap<Character, Character>() {
{
put(')', '(');
put(']', '[');
put('}', '{');
}};
Deque<Character> stack = new LinkedList<Character>();
for (int i = 0; i < n; i++) {
char ch = s.charAt(i);
if (pairs.containsKey(ch)) {
if (stack.isEmpty() || stack.peek() != pairs.get(ch)) {
return false;
}
stack.pop();
} else {
stack.push(ch);
}
}
return stack.isEmpty();
}
}

边栏推荐
- 【路径规划】使用垂距限值法与贝塞尔优化A星路径
- MP4文件格式解析之结合实例分析
- Anti climbing means cracking the second
- HB 5469民用飞机机舱内部非金属材料燃烧试验方法
- Ora-02437 failed to verify the primary key violation
- Learn about scratch
- Wechat applet development beginner 1
- go time包常用函数
- Is it safe to buy funds online?
- [experiment sharing] log in to Cisco devices through the console port
猜你喜欢
随机推荐
Chisel tutorial - 05 Sequential logic in chisel (including explicit multi clock, explicit synchronous reset and explicit asynchronous reset)
SQL uses the in keyword to query multiple fields
Ora-02437 failed to verify the primary key violation
Chisel tutorial - 00 Ex.scala metals plug-in (vs Code), SBT and coursier exchange endogenous
C language learning
Postgres timestamp to human eye time string or millisecond value
Is it safe to buy funds online?
Take you hand in hand to build Eureka client with idea
postgis学习
Anxin can internally test offline voice module vb-01 to communicate with esp-c3-12f
C number of words, plus ¥, longest word, average value
保证接口数据安全的10种方案
Flash download setup
【汇总】看过的一些Panel与视频
Data analysis series 3 σ Rule / eliminate outliers according to laida criterion
C - linear table
Anxin vb01 offline voice module access intelligent curtain guidance
The for loop realizes 1-100 addition and eliminates the 4-digit tail number
【LeetCode】20、有效的括号
[experiment sharing] log in to Cisco devices through the console port








