字符串中的括号匹配
|
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所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 2020_11_0902/16
- ♥ 2020_04_2905/01
- ♥ 2022_02_24_0103/01
- ♥ 2023_02_2202/27
- ♥ 2020_04_2204/23
- ♥ 2022_03_0203/09
热评文章
- 2022_03_16 0
- 2020_11_20 0
- 2026_08_26 0
- 2019_11_05 0
- 2022_09_14 0
- 2020_11_19_02 0