leetcode第二十题
参考
- string
前言
三种类型的括号
要么按顺序两两一对,要么首尾一对对内嵌。
根据示例2
输入:s = “()[]{}”
输出:true
示例4
输入:s = “{[]}”
输出:true
看到具体效果。
正文
正常看到这个题目,原本是想通过string的replace去替换掉一组成员,然后循环判断,但是c++的replace不是很好使就算了。。。
那就按照关系,去看一下ASCII码,发现这几个括号之间相差1或2的情况。如下图第三列情况:
那么在if关系中应该是
1 | if(s[i]+1 == s[i+i] || s[i]+2 == s[i+i]) |
当然这种情况是括号两两一对按序排列的理想情况
1 | class Solution { |
其实这样写也有点不靠谱,两种情况放到一起有点不太明确,看着也会很奇怪。
第一种情况就是两两一对
第二种情况就是头尾一对往里推
测试一下这个案例没问题。
好家伙。。抛开头和尾,里面这样组合也确实是闭合的图形,突然给我整不会了。
思路一下子打不开了。。感觉陷进去了,挣扎了挺久的看了下评论区全是用栈的方式来弄,这样好像就没看到什么暴力解体的思路了,stack还没怎么用过不熟悉,看来这题要搁置先了
结语
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Box'Blog!
评论