c程序设计中的括号匹配 问题描述 1.设某一算术表达式中包含圆括号、方括号和花括号三种类型的括号,编
发布网友
发布时间:2022-05-16 05:13
我来回答
共2个回答
热心网友
时间:2023-10-12 04:00
#include <iostream>
#include <string>
#include <stack>
bool match(const std::string & s);
int main()
{
std::string line;
getline(std::cin, line);
std::cout << match(line) << std::endl;
return 0;
}
bool match(const std::string & s)
{
std::stack<char> stk;
for (int i = 0; i < (int)s.length(); ++i) {
char c = s[i];
switch (c) {
case '(':
case '[':
case '{':
stk.push(c);
break;
case ')':
if (stk.empty() || stk.top() != '(') {
return false;
}
stk.pop();
break;
case ']':
if (stk.empty() || stk.top() != '[') {
return false;
}
stk.pop();
break;
case '}':
if (stk.empty() || stk.top() != '{') {
return false;
}
stk.pop();
break;
default:
break;
}
}
return stk.empty();
}
这是一份C++代码,存为.cpp后缀的文件应该可以用于如vc的编译器了,可以拿去玩玩。C的话,自己试试吧,差不多。
热心网友
时间:2023-10-12 04:01
int isMatch(char *expr) {
int i;
int flag1 = 0,flag2 = 0,flag3 = 0;
for(i = 0; expr[i]; ++i) {
if(expr[i] == '(') ++flag1;
if(expr[i] == ')') --flag1;
if(expr[i] == '[') ++flag1;
if(expr[i] == ']') --flag1;
if(expr[i] == '{') ++flag1;
if(expr[i] == '}') --flag1;
}
return !(flag1 || flag2 || flag3);
}