周末加班的效率简直是太低了,心态疲软,不想简单机械地重复,却又没有能力坚定地改变;时光匆匆流逝,案头的那些书似乎还从来没阅读过,买的时候是最新的,然后一年又一年……
题目描述
| 分类 | 困难度 | 👍 | 👎 |
|---|---|---|---|
| 算法 | 简单 (43.77%) | 2215 | - |
公司
airbnb | amazon | bloomberg | facebook | google | microsoft | twitter | zenefits给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 1.左括号必须用相同类型的右括号闭合。
- 2.左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
思路分析
经过观察,我们可以利用字符串的特性,当'[],{},()'成对出现时,用 repalce 替换为'',判断最终剩余的字符串就是答案。这里值得注意的是,鉴于能够成功配对时,我们将匹配的两个字符替换为了空,因此,遍历次数为字符串长度一半时,也能达到同样的目的。
AC 代码
暴力解法
/*
* @lc app=leetcode.cn id=20 lang=javascript
*
* [20] 有效的括号
*/
// @lc code=start
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function (s) {
const len = s.length / 2;
for (let i = 0; i < len; i++) {
s = s.replace("()", "").replace("{}", "").replace("[]", "");
}
return !Boolean(s.length);
};
// @lc code=end
待补充
总结
投机取巧往往不在于算法和数据结构有多精湛,而在于对问题本质的理解和背后规律的发现;当然,对语言语法的掌握也是能够成功解题所必须的。
今晚得熬夜把这一周的坑填了,目前的想法是看看别人思路和解法,尝试自己理解一遍;当然要是能够尝试不同语言来解题,估计也是一个了解多种语言的绝佳机会。曾经有位前端大佬说过:“了解一门语言最好的方法,就是用它来解决实际问题”。
本文正在参与「掘金 2021 春招闯关活动」, 点击查看活动详情