字符串中的括号匹配
|
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <iostream> #include <stack> #include <string_view> bool is_brackets_matched(std::string_view str) { std::stack<char> brackets; for (char ch : str) { switch (ch) { case '(': case '[': case '{': brackets.push(ch); break; case ')': if (brackets.empty() || brackets.top() != '(') { return false; } brackets.pop(); break; case ']': if (brackets.empty() || brackets.top() != '[') { return false; } brackets.pop(); break; case '}': if (brackets.empty() || brackets.top() != '{') { return false; } brackets.pop(); break; default: // 忽略非括号字符 break; } } // 防止只有左括号的情况,例如:"(((" return brackets.empty(); } int main() { std::cout << std::boolalpha; std::cout << is_brackets_matched("a + (b * [c - 1])") << '\n'; // true std::cout << is_brackets_matched("([{}])") << '\n'; // true std::cout << is_brackets_matched("([)]") << '\n'; // false std::cout << is_brackets_matched("((())") << '\n'; // false std::cout << is_brackets_matched("())") << '\n'; // false } |
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 后端知识点记述 一09/08
- ♥ 2020_11_0902/16
- ♥ 2025_03_1803/18
- ♥ 2025_03_2503/25
- ♥ 2023_02_0902/11
- ♥ 2025_03_1103/11
热评文章
- 2020_04_28 0
- 2022_03_14 0
- 2020_11_23 0
- 2025_03_25 0
- 2020_04_22 0
- 2022_03_16 0