正在阅读:
- 首页 » 开发运维 » 后端 » 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日 发表
转载请注明文本地址:http://www.bemhome.com/post/186.html
