题目:
给出一个字符串 “g(a)((M)())e” 输出结果为4。
思路:
1.遍历字符串,如果遇到左括号,则将其入栈
2.继续遍历字符串,当遇到右括号且栈非空,则括号匹配数加一
3.继续循环遍历,如果遇到不是 ( 或 )时,遍历下个字符
函数代码:
void Question3(char str[]) {
char* p = NULL;
p = str;
stack<char>s;
int count = 0;
while (*p != '\0') {//当时做库洛题的时候这里可能漏了一个*
if (*p == '(') {
s.push(*p);
}
else if (!s.empty() && *p == ')') {//当时做题的时候这里可能漏了一个条件
count++;
s.pop();
}
p++;
}
cout << count << endl;
}
完整代码:
#include<iostream>
#include<stack>//栈
#include<string>
using namespace std;
void Question3(char str[]) {
char* p = NULL;
p = str;
sta