正在阅读:
- 首页 » 开发运维 » 后端 » AI编程C++程序,假设表达式中允许包含两种括号...
AI编程C++程序,假设表达式中允许包含两种括号...
题目:
假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如 ([]()) 或 [([][])] 等为正确的匹配,[(]) 或 ([ ]( ) 或 ( ( ) ) ) 均为错误的匹配。
现在的问题是,要求检验一个给定表达式中的括弧是否正确匹配
输入一个只包含圆括号和方括号的字符串,判断字符串中的括号是否匹配,匹配就输出 OK,不匹配就输出 Wrong 。
如输入[(]) 则输出为Wrong 如输入[([][])] 则输出OK
#include <iostream> #include <stack> using namespace std; bool isMatchingPair(char opening, char closing) { if (opening == '(' && closing == ')') return true; else if (opening == '[' && closing == ']') return true; return false; } bool isParenthesisMatching(string expression) { stack<char> s; for (int i = 0; i < expression.length(); i++) { if (expression[i] == '(' || expression[i] == '[') s.push(expression[i]); else if (expression[i] == ')' || expression[i] == ']') { if (s.empty() || !isMatchingPair(s.top(), expression[i])) return false; else s.pop(); } } return s.empty(); } int main() { string expression; cout << "请输入一个只包含圆括号和方括号的字符串: "; cin >> expression; if (isParenthesisMatching(expression)) cout << "OK" << endl; else cout << "Wrong" << endl; return 0; }
上述代码中,使用了一个栈数据结构来检查括号是否匹配。开始遍历输入字符串的每个字符,如果遇到一个开括号(即'('或'['),将其推入栈中。如果遇到一个闭括号(即')'或']'),检查栈顶是否是与之匹配的开括号。如果是匹配的,弹出栈顶元素,否则表示括号不匹配。
最后,检查栈是否为空。如果栈为空,则表示所有括号都匹配,输出"OK"。否则,输出"Wrong"表示括号不匹配。
该日志由 bemender 于 2023年09月08日 发表
转载请注明文本地址:https://www.bemhome.com/post/186.html