给定一个只包括 '(',')','{','}','[',']'
的字符串 s ,判断字符串是否有效。
思路
- 用栈暂存左括号;用 map 键值对存储左括号和右括号的对应关系。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution { public: bool isValid(string s) { map<char, char> brace_mp; brace_mp.insert(make_pair<>('(', ')')); brace_mp.insert(make_pair<>('[', ']')); brace_mp.insert(make_pair<>('{', '}'));
stack<char> left_brace_st; for (int i = 0; i < s.length(); i++) { if (brace_mp.count(s[i])) left_brace_st.push(s[i]); else { if (!left_brace_st.empty()) { auto tmp_left_brace = left_brace_st.top();
if (s[i] != brace_mp[tmp_left_brace]) break; else left_brace_st.pop(); } else return false; } }
return left_brace_st.empty(); } };
|