提交 9d44a444 编写于 作者: L luzhipeng

validParenthese

上级 642b4d64
......@@ -2,6 +2,8 @@
leetcode题解,记录自己的leecode解题之路。
## 传送门
### 简单难度
- [20. Valid Parentheses](https://github.com/azl397985856/leetcode/blob/master/validParentheses.md)
### 中等难度
- [2. Add Two Numbers](https://github.com/azl397985856/leetcode/blob/master/addTwoNumbers.md)
- [3. Longest Substring Without Repeating Characters](https://github.com/azl397985856/leetcode/blob/master/longestSubstringWithoutRepeatingCharacters.md)
......
## 题目地址
https://leetcode.com/problems/valid-parentheses/description
## 题目描述
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Note that an empty string is also considered valid.
Example 1:
Input: "()"
Output: true
Example 2:
Input: "()[]{}"
Output: true
Example 3:
Input: "(]"
Output: false
Example 4:
Input: "([)]"
Output: false
Example 5:
Input: "{[]}"
Output: true
## 思路
使用栈,遍历输入字符串
如果当前字符为左半边括号时,则将其压入栈中
如果遇到右半边括号时,分类讨论:
1)如栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环
2)若此时栈为空,则直接返回false
3)若不为对应的左半边括号,反之返回false
![20.validParentheses](./assets/20.validParentheses.gif)
(图片来自: https://github.com/MisterBooo/LeetCodeAnimation)
## 关键点解析
1. 栈的基本特点和操作
2. 如果你用的是JS没有现成的栈,可以用数组来模拟
入: push 出: pop
> 入: push 出 shift 就是队列
## 代码
```js
/*
* @lc app=leetcode id=20 lang=javascript
*
* [20] Valid Parentheses
*
* https://leetcode.com/problems/valid-parentheses/description/
*
* algorithms
* Easy (35.97%)
* Total Accepted: 530.2K
* Total Submissions: 1.5M
* Testcase Example: '"()"'
*
* Given a string containing just the characters '(', ')', '{', '}', '[' and
* ']', determine if the input string is valid.
*
* An input string is valid if:
*
*
* Open brackets must be closed by the same type of brackets.
* Open brackets must be closed in the correct order.
*
*
* Note that an empty string is also considered valid.
*
* Example 1:
*
*
* Input: "()"
* Output: true
*
*
* Example 2:
*
*
* Input: "()[]{}"
* Output: true
*
*
* Example 3:
*
*
* Input: "(]"
* Output: false
*
*
* Example 4:
*
*
* Input: "([)]"
* Output: false
*
*
* Example 5:
*
*
* Input: "{[]}"
* Output: true
*
*
*/
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let valid = true;
const stack = [];
const mapper = {
'{': "}",
"[": "]",
"(": ")"
}
for(let i in s) {
const v = s[i];
if (['(', '[', '{'].indexOf(v) > -1) {
stack.push(v);
} else {
const peak = stack.pop();
if (v !== mapper[peak]) {
valid = false
}
}
}
if (stack.length > 0) return false;
return valid;
};
```
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册