LeetCodeの有効な括弧C++版
9577 ワード
タイトルの説明:
‘(’,’)’,’{’,’}’,’[’,’]’のみを含む文字列を与え,文字列が有効であるか否かを判断する.
有効な文字列は次のとおりです.
左かっこは同じタイプの右かっこで閉じる必要があります.左かっこは正しい順序で閉じなければなりません.注意空の文字列は有効な文字列とみなされます.
C++コードは以下の通りです.
‘(’,’)’,’{’,’}’,’[’,’]’のみを含む文字列を与え,文字列が有効であるか否かを判断する.
有効な文字列は次のとおりです.
左かっこは同じタイプの右かっこで閉じる必要があります.左かっこは正しい順序で閉じなければなりません.注意空の文字列は有効な文字列とみなされます.
1:
: "()"
: true
2:
: "()[]{}"
: true
3:
: "(]"
: false
4:
: "([)]"
: false
5:
: "{[]}"
: true
C++コードは以下の通りです.
class Solution {
public:
bool isValid(string s) {
if(s.length()%2!=0) return false;//
map<char,char> wordbook;//
wordbook.insert(map<char,char>::value_type(')','('));
wordbook.insert(map<char,char>::value_type(']','['));
wordbook.insert(map<char,char>::value_type('}','{'));
stack<char> mystack;//
for(int i=0;i<s.length();i++)
{
if(s[i]=='['||s[i]=='{'||s[i]=='(')//
mystack.push(s[i]);//
else if(s[i]==']'||s[i]=='}'||s[i]==')')//
{
if(mystack.empty()) return false;
// , 。
if(wordbook[s[i]]==mystack.top())//
{
mystack.pop();//
continue;
}
else return false;
}
}
if(mystack.empty()) return true;//
else return false;
}
};