本文主要是介绍LeetCode第20题之Valid Parentheses,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
方法一:用栈实现
C++代码:
#include <stack>
#include <iostream>
using namespace std;
//Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.class Solution {
public:char reverse_char(char c){switch(c){case ')': return '(';case '}': return '{';case ']': return '[';default: return '\0';}}bool isValid(string s) {stack<char> sta;int sz = s.length();if (sz%2 != 0){return false;}for (int i=0;i<sz;++i){if ('(' == s[i] || '{' == s[i] || '[' == s[i]){sta.push(s[i]);}else if (')' == s[i] || '}' == s[i] || ']' == s[i]){if (0 == sta.size() || sta.top() != reverse_char(s[i])){return false;}sta.pop();}}if (0 == sta.size()){return true;}return false;}
};int main()
{Solution s;cout<<s.isValid("{([])}");cout<<endl;cout<<s.isValid("{(])}");cout<<endl;return 0;
}
这篇关于LeetCode第20题之Valid Parentheses的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!