|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- /*
- 给定一个[只包括] '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
- 有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 注意空字符串可被认为是有效字符串。
- 示例 1:
- 输入: "()"
- 输出: true
- 示例 2:
- 输入: "()[]{}"
- 输出: true
- 示例 3:
- 输入: "(]"
- 输出: false
- 示例 4:
- 输入: "([)]"
- 输出: false
- 示例 5:
- 输入: "{[]}"
- 输出: true
- */
复制代码
- #include<stack>
- #include<string>
- #include <iostream>
- using namespace std;
- class Solution {
- public:
- bool isValid(string s) {
- stack<char> sk;
- char match = 0;
- char temp = 0;
- int len = s.length();
- for(int i = 0;i <len;i++)
- {
- temp = s.at(i);
- if(sk.empty()==true)
- {
- sk.push(temp);
- }
- else
- {
- match = 0;
- switch(temp)
- {
- case ')':
- if(sk.top()=='(')
- {
- match = 1;
- }
- break;
- case '}':
- if(sk.top()=='{')
- {
- match = 1;
- }
- break;
- case ']':
- if(sk.top()=='[')
- {
- match = 1;
- }
- break;
- default:
- //match = 0;
- break;
- }
-
- if(match == 1)
- {
- sk.pop();
- }
- else
- {
- sk.push(temp);
- }
- }
- }
- return sk.empty();
- }
- };
复制代码
测试代码:
- int main(void)
- {
- Solution solution;
- string s("{[]}");
- cout << solution.isValid(s) << endl;
- return 0;
- }
复制代码
提交结果:
- 执行用时 : 8 ms, 在Valid Parentheses的C++提交中击败了97.02% 的用户
- 内存消耗 : 8.7 MB, 在Valid Parentheses的C++提交中击败了68.92% 的用户
- 76 / 76 个通过测试用例 状态:通过
复制代码
Nice.
|
|