• 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 }
  • 相关阅读:
    CSS 会被继承的属性
    List的遍历和删除元素
    java中unicode和中文相互转换
    Hibernate注解方式一对多自关联关系映射
    HQL: Hibernate查询语言
    java replaceall 使用正则表达式替换单等号,不替换其他相关的等号。
    Java 将图片转二进制再将二进制转成图片
    返回上一页并刷新与返回不刷新代码
    Css圆角边框
    jquery mobile
  • 原文地址:https://www.cnblogs.com/xwxz/p/13329888.html
Copyright © 2020-2023  润新知