括号匹配问题
堆栈存入数组下标间接实现数组元素的操作
不使用堆栈
#include<iostream>
#include<string>
using namespace std;
bool find(string& s, int index) {
while (index > 0) {
index--;
if (s[index] == '(') {
s[index] = 'a';
return true;
}
}
return false;
}
int main() {
string data;
while (cin >> data) {
cout << data << endl;
for (int i = 0;i < data.length();i++) {
if (data[i] == ')') {
if (find(data, i)) {
data[i] = 'a';
}
}
}
for (int i = 0;i < data.length();i++) {
if (data[i] == '(') {
cout << "$";
}
else if (data[i] == ')') {
cout << "?";
}
else {
cout << " ";
}
}
cout << endl;
}
return 0;
}
使用堆栈
#include <stdio.h>
#include <stack>
using namespace std;
stack<int> S;
char str[110];
char ans[110];
int main () {
while (scanf ("%s",str) != EOF) {
int i;
for (i = 0;str[i] != 0;i ++) {
if (str[i] == '(') {
S.push(i);
ans[i] = ' ';
}
else if (str[i] == ')') {
if (S.empty() == false) {
S.pop();
ans[i] = ' ';
}
else ans[i] = '?';
}
else ans[i] = ' ';
}
while(!S.empty()) {
ans[ S.top() ] = '$';
S.pop();
}
ans[i] = 0;
puts(str);
puts(ans);
}
return 0;
}
来源:CSDN
作者:最佳损友1020
链接:https://blog.csdn.net/freedom1523646952/article/details/104174774