1.【力扣刷题】合并两个有序链表2.【力扣】旋转链表3.【力扣】删除链表中的结点4.【力扣】反转链表II5.【力扣】分隔链表6.【力扣】删除排序链表中的重复元素II7.【洛谷】奖学金(结构体排序)8.【洛谷】明明的随机数(双指针去除重复元素)9.【洛谷】求第k小的数字(分治算法)10.【洛谷】阶乘之和(高精度运算)11.【洛谷】闰年12.【洛谷】数的性质13.【洛谷】虫子吃苹果14.【力扣】奇偶链表15.【力扣】不同路径II(动态规划)16.【力扣】数楼梯(动态规划)(看来高精度不学不行了)17.【力扣】斐波那契数列(动态规划入门)18.【力扣】最大子数组和(贪心)19.【力扣】摆动序列(贪心)20.【力扣】排列问题(回溯法)(去重)21.【力扣】排列问题(回溯法)(memset函数初始化数组)22.【力扣】非递减子序列23.【力扣】子集II(回溯法)(排序函数的一种隐藏用法?)24.【力扣】复原IP地址(回溯法)(分割问题)25.【力扣】分割回文串(回溯法)26.【力扣】组合总和3(组合的去重)27.【力扣】组合总数(回溯法)28.【力扣】电话号码的组合(回溯法)29.【力扣】求组合(回溯算法)
30.【力扣】括号匹配(栈的应用)
31.【力扣】组合总数(另一种整数溢出)32.【CUMTOJ】法师康工人(代码细节控制)33.【代码随想录】零钱兑换34.【代码随想录】零钱兑换II(关于组合与排列的区别)35.【代码随想录】完全背包36.【力扣】岛屿数量(体会一下dfs和bfs思路的实质)37.【代码随想录】广度优先搜索38.【代码随想录】深度优先搜索39.【力扣】重新安排行程(很难的回溯题)(未完待续)40.【力扣】零和一(不是多重背包)41.【力扣】最长公共子序列(动态规划)(还是得学套路才能会做)42.【力扣】目标和(新鲜的01背包题)43.【力扣】分割等和子集(不太像01背包的01背包)44.【力扣】加油站(读题)题目描述
顾名思义
代码如下:
#include<iostream>
#include<string>
#include<stack>
using namespace std;
bool isValid(string s){
if(s.empty()){
return true;
}
if(s.size()%2 != 0){
return false;
}
int i = 0;
stack<char> st;
while(i < s.size()){
if(s[i] == '('){
st.push(')');
//continue;
}
if(s[i] == '['){
st.push(']');
//continue;
}
if(s[i] == '{'){
st.push('}');
//continue;
}
if(s[i] == ')' || s[i] == ']' || s[i] == '}'){
if(st.empty()){
return false;
}
if(st.top() == s[i]){
st.pop();
}else{
return false;
}
}
i++;
}
return st.empty();
}
//bool isValid(string s) {
// if (s.size() % 2 != 0) return false; // 如果s的长度为奇数,一定不符合要求
// stack<char> st;
// for (int i = 0; i < s.size(); i++) {
// if (s[i] == '(') st.push(')');
// else if (s[i] == '{') st.push('}');
// else if (s[i] == '[') st.push(']');
// // 第三种情况:遍历字符串匹配的过程中,栈已经为空了,没有匹配的字符了,说明右括号没有找到对应的左括号 return false
// // 第二种情况:遍历字符串匹配的过程中,发现栈里没有我们要匹配的字符。所以return false
// else if (st.empty() || st.top() != s[i]) return false;
// else st.pop(); // st.top() 与 s[i]相等,栈弹出元素
// }
// // 第一种情况:此时我们已经遍历完了字符串,但是栈不为空,说明有相应的左括号没有右括号来匹配,所以return false,否则就return true
// return st.empty();
// }
int main(){
string s;
cin>>s;
if(isValid(s)){
cout<<"true";
}else{
cout<<"false";
}
return 0;
}
里面那个遇到左括号入栈右括号的小技巧很有意思。
合集:
刷题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】