题目描述:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
1. 左括号必须用相同类型的右括号闭合。
2. 左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true
JavaScript实现:
/** * @param {string} s * @return {boolean} */ const isValid = function (s) { let res = []; for (let i = 0; i < s.length; i++) { let letter = s.charAt(i); switch (letter) { case "(" : {res.push(letter);break;} case "{" : {res.push(letter);break;} case "[" : {res.push(letter);break;} case "]" : { if(res.pop() !== "["){ return false; } break; } case "}" : { if(res.pop() !== "{"){ return false; } break; } case ")" : { if(res.pop() !== "("){ return false; } break; } } } return !res.length };
var isValid = function(s) { let map = { '{': '}', '(': ')', '[': ']' } let stack = [] for(let i = 0; i < s.length ; i++) { if(map[s[i]]) { stack.push(s[i]) } else if(s[i] !== map[stack.pop()]){ return false } } return stack.length === 0 };
var isValid = function (s) { while (s.length) { var temp = s; s = s.replace('()', ''); s = s.replace('[]', ''); s = s.replace('{}', ''); if (s == temp) return false } return true; };
Java实现:
待补充