20220410,相隔1个月
|
```javascript
/**
- @param {string} s
- @return {boolean}
*/
// 21:53 -> 22:03
var isValid = function(s) {
const len = s.length;
if (len % 2 !== 0) return false;
// const map = new Map({ // bug: 会报错: object is not iterable(cannot read property Symbol)
// ‘}’: ‘{‘,
// ‘)’: ‘(‘,
// ‘]’: ‘[‘
// });
const map = new Map([
]) let stack = []; for(let i = 0; i < len; i++) {['}', '{'],
[')', '('],
[']', '[']
} return !stack.length }; ``` | | —- |if (map.has(s[i])) { if (stack.length <= 0 || (stack.length > 0 && map.get(s[i]) !== stack.pop())) { return false; } } else { stack.push(s[i]) }
20220406,12min
| 20220406```javascript /**
- @param {string} s
- @return {boolean}
*/
// 09:19 -> 09:31
// 栈
var isValid = function(s) {
// if (s % 2 !== 0) { // bug:s是字符串,不是字符串的长度
if (s.length % 2 !== 0) {
return false;
}
let stack = [];
const map = new Map([
[‘)’, ‘(‘],
[‘]’, ‘[‘],
[‘}’, ‘{‘],
])
for (let str of s) {
if (map.has(str)) {
if (stack.length > 0 && map.get(str) === stack[stack.length-1]) {
} else {stack.pop();
} } else { stack.push(str); } } return !stack.length }; ``` 执行用时:64 ms, 在所有 JavaScript 提交中击败了65.69%的用户return false;
内存消耗:41.3 MB, 在所有 JavaScript 提交中击败了45.05%的用户
通过测试用例:91 / 91 | | —- |
20220403,12min
| 20220403```javascript /**
- @param {string} s
- @return {boolean}
*/
// 09:20 -> 09:32
// 栈
// map 记录对应括号信息
// 循环,左括号入栈,右括号匹配map,
var isValid = function(s) {
const map = new Map([
[‘)’, ‘(‘],
[‘]’, ‘[‘],
[‘}’, ‘{‘],
]);
let stack = [];
for (let str of s) {
if (map.has(str)) {
if (stack[stack.length -1] === map.get(str)) {
} else {stack.pop();
} } else { stack.push(str); } } return stack.length === 0 }; ``` 知识点return false;
- 可以再考虑如果s的长度为奇数,则直接返回false
| | —- |
20220331,
| 20220331:
思路
- 左括号入栈,如果有右括号,出栈
- 循环所有值,最后栈中没有值,则为true,否则为false
算法```javascript
/**
- @param {string} s
- @return {boolean}
*/
var isValid = function(s) {
let stack = [];
const leftArr = [‘(‘, ‘[‘, ‘{‘];
const obj = {
} for (let i = 0; i < s.length; i++) {')': '(', ']': '[', '}': '{',
} return !stack.length }; ```if (leftArr.includes(s[i])) { stack.push(s[i]) }else { if (obj[s[i]] === stack[stack.length-1] ) { stack.pop(); } else { return false; } }
执行用时:60 ms, 在所有 JavaScript 提交中击败了83.49%的用户
内存消耗:41.2 MB, 在所有 JavaScript 提交中击败了48.74%的用户
通过测试用例:91 / 91 | | —- |