LeetCode20. 有效的括号(栈的使用-括号匹配题)
之前在区块链面试中也遇到过,今天又看到它了,就简单记录一下吧。
代码如下:
1 // 2 // Created by tusxxw on 2020/7/17. 3 // 4 /** 5 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 6 7 有效字符串需满足: 8 9 左括号必须用相同类型的右括号闭合。 10 左括号必须以正确的顺序闭合。 11 注意空字符串可被认为是有效字符串。 12 13 示例 1: 14 15 输入: "()" 16 输出: true 17 示例 2: 18 19 输入: "()[]{}" 20 输出: true 21 22 来源:力扣(LeetCode) 23 链接:https://leetcode-cn.com/problems/valid-parentheses 24 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 25 */ 26 27 #include <string> 28 #include <iostream> 29 30 using namespace std; 31 32 class Solution { 33 public: 34 bool isValid(string s) { 35 const int len = s.size(); 36 int rear = len -1; 37 int stack[len+2];//栈 简单题自己就数组模拟栈比STL中的stack要省时间的多 38 int top = 0; 39 for (int i = 0; i < len; ++i) { 40 //如果等于左括号就压栈 41 if(s[i] == '(' || s[i] == '[' || s[i] == '{') { 42 stack[top++] = s[i];//压栈 43 }else if(s[i] == ')') { 44 if(top == 0) return false; 45 if(stack[top-1] == '('){ 46 top--; 47 } else { 48 return false; 49 } 50 }else if(s[i] == ']') { 51 if(top == 0) return false; 52 if(stack[top-1] == '['){ 53 top--; 54 } else { 55 return false; 56 } 57 }else if(s[i] == '}') { 58 if(top == 0) return false; 59 if(stack[top-1] == '{'){ 60 top--; 61 } else { 62 return false; 63 } 64 } 65 } 66 if(top == 0) { 67 return true; 68 }else { 69 return false; 70 } 71 } 72 }; 73 int main(){ 74 Solution s; 75 bool res = s.isValid("()()[]{}"); 76 cout<<res; 77 return 0; 78 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!