LeetCode小白练习记录----20:有效的括号(经典Map对象练习)

上次说到Map对象用的不是很熟练,今天做到这个题发现很适合用Map来解,特意记录一下!
题目:有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: “()”
输出: true
示例 2:
输入: “()[]{}”
输出: true
示例 3:
输入: “(]”
输出: false
示例 4:
输入: “([)]”
输出: false
示例 5:
输入: “{[]}”
输出: true
**解题思路:先用map对象以键值对的方式存储三种括号信息,定义一个空数组res用来缓存括号状态,循环遍历检测每一个括号字符,用map中的值匹配键,有则在res中删除对应的键,遍历结束res为空则返回true,否则返回false
代码:


```javascript
var isValid = function (s) {
  // 定义空数组存储括号状态
  let res = [];
  let map = new Map();
  map.set('(', ')');
  map.set('[', ']');
  map.set('{', '}');
  for (let i = 0; i < s.length; i++) {
  	// 存储键到res中
    if (map.has(s[i])) res.push(s[i]);
    else {
      if (res.length === 0) return false;
      if (map.get(res[res.length - 1]) === s[i]) res.pop();
      else return false;
    }
  }
  if (res.length) return false;
  return true;
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值