zoukankan      html  css  js  c++  java
  • LeetCode(20):有效的括号

    Easy!

    题目描述:

    给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

    输入: "()[]{}"
    输出: true
    

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

    输入: "([)]"
    输出: false
    

    示例 5:

    输入: "{[]}"
    输出: true

    解题思路:

    这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号和小括号。这里我们需要用一个栈,我们开始遍历输入字符串,如果当前字符为左半边括号时,则将其压入栈中,如果遇到右半边括号时,若此时栈为空,则直接返回false,如不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回false,

    C++代码:

     1 class Solution {
     2 public:
     3     bool isValid(string s) {
     4         stack<char> parentheses;
     5         for (int i = 0; i < s.size(); ++i) {
     6             if (s[i] == '(' || s[i] == '[' || s[i] == '{') parentheses.push(s[i]);
     7             else {
     8                 if (parentheses.empty()) return false;
     9                 if (s[i] == ')' && parentheses.top() != '(') return false;
    10                 if (s[i] == ']' && parentheses.top() != '[') return false;
    11                 if (s[i] == '}' && parentheses.top() != '{') return false;
    12                 parentheses.pop();
    13             }
    14         }
    15         return parentheses.empty();
    16     }
    17 };
  • 相关阅读:
    【2019-08-03】自卑和悲观是有区别的
    你现在不用写代码了吧?
    【2019-08-02】信任是一种能力
    【2019-08-01】给孩子一个渴望长大的榜样
    【一句日历】2019年8月
    【2019-07-31】一切皆有寓意
    【2019-07-30】原来努力会上瘾
    【2019-07-29】睡多了,会被宰的
    【2019-07-28】活到老,学到老
    【2019-07-27】习惯的力量很强大
  • 原文地址:https://www.cnblogs.com/ariel-dreamland/p/9128258.html
Copyright © 2011-2022 走看看