每日一题&&学习笔记
给定一个只包括 '('
,')'
,'{'
,'}'
,'['
,']'
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([])"
输出:true
提示:
1 <= s.length <= 104
s
仅由括号'()[]{}'
组成
这道题的思路是用栈去判断,将第一个符号存入栈顶,再次判断到相同类型的符号就出栈。若无法找到相同类型的就return false。但是我发现了另一种思路,使用contains和replace函数,当存在一对括号时,就将括号替换成空格。这样只需要判断最后的字符串是否为空就好了,但是在实际的写代码过程中发现他其实会out of range。我自己猜测可能是因为当判断其他括号时,我仍对每一组括号做了判断,所以有没有大佬会这种思路的代码解法,求求啦!!!!
class Solution {
public:
bool isValid(string s) {
while(s.contains("()")||s.contains("[]")||s.contains("{}")){
s=s.replace(s.find("()"),1,"");
s=s.replace(s.find("{}"),1,"");
s=s.replace(s.find("[]"),1,"");
}
return s=="";
}
};
原文地址:https://blog.csdn.net/m0_73096516/article/details/142931834
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!