anzhenjiang 发表于 2019-7-29 09:35

c++算法练习--栈

## 每日水一题
### 链接:https://leetcode-cn.com/problems/permutations

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:

输入: "()"
输出: true
示例 2:

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

输入: "(]"
输出: false
示例 4:

输入: "([)]"
输出: false
示例 5:

输入: "{[]}"
输出: true
```
使用栈来存字符串,当碰到闭括号时,判断栈顶是否为相应的开括号
```
    bool isValid(string s) {
      stack<char> st;
      for(int i = 0 ; i < s.length(); i ++){
            if(s == '(' || s == '{' || s == '[') st.push(s);
            if(s == ')'){
                if(st.size() != 0 && st.top() == '(') st.pop();
                else return false;
            }
            if(s == '}'){
                if(st.size() != 0 && st.top() == '{') st.pop();
                else return false;
            }
            if(s == ']'){
                if(st.size() != 0 && st.top() == '[') st.pop();
                else return false;
            }
      }
      if(st.size() != 0) return false;
      return true;
    }
```

anzhenjiang 发表于 2019-7-30 14:57

北溟鱼 发表于 2019-7-29 11:20
弱弱问一句,最后存文件后缀名是啥

cpp,这个只是核心代码,没有其他的头文件,命名空间之类的

anzhenjiang 发表于 2019-7-30 14:58

Cl_Slaid 发表于 2019-7-29 11:21
碰到闭括号再判断就行了,排除掉错误情况就行了orz...比我写得精简

哈哈哈,大家一起水题

JuncoJet 发表于 2019-7-29 09:59

烫烫烫烫烫
屯屯屯屯屯

JuncoJet 发表于 2019-7-29 10:00

不对,这个栈是STL,不能屯屯屯
原谅我水错了……

reb0rn 发表于 2019-7-29 10:02

多谢大佬分享

闲月疏云 发表于 2019-7-29 10:02

JuncoJet 发表于 2019-7-29 10:00
不对,这个栈是STL,不能屯屯屯
原谅我水错了……

我还在想STL怎么就屯起来了{:301_997:}

閒雲野鶴 发表于 2019-7-29 10:15

感谢大佬分享

Pollingsoon 发表于 2019-7-29 10:28

表示我看不懂

liuminxin45 发表于 2019-7-29 10:56

大佬,我也想刷Leetcode,有APP可以刷吗

anzhenjiang 发表于 2019-7-29 11:01

liuminxin45 发表于 2019-7-29 10:56
大佬,我也想刷Leetcode,有APP可以刷吗

好像是没有APP的,我一直都是在网站上刷的

anzhenjiang 发表于 2019-7-29 11:02

JuncoJet 发表于 2019-7-29 10:00
不对,这个栈是STL,不能屯屯屯
原谅我水错了……

哈哈哈哈
页: [1] 2
查看完整版本: c++算法练习--栈