半条命16吧 关注:394贴子:26,043
  • 1回复贴,共1

符号配对,字符串方法

只看楼主收藏回复

#include <iostream>
#include <stack>
#include <string>
using namespace std;
bool Pair(char a, char b) {
if (a == '(' && b == ')')
return true;
else if (a == '[' && b == ']')
return true;
else if (a == '{' && b == '}')
return true;
else if (a == '<' && b == '>')
return true;
else return false;
}
int main()
{
string s,part,res;
stack<int>stk;
while (part != ".") {
cin >> part;
s += part;
}
for (int i = 0; i < s.length(); i++) {
if (s[i] == '(' || s[i] == ')' || s[i] == '{' || s[i] == '}' || s[i] == '[' || s[i] == ']')
res += s[i];
if (s.find("/*") != -1) {
s.replace(s.find("/*"), 2, "< ");
res += "<";
}
if (s.find("*/") != -1) {
s.replace(s.find("*/"), 2, "> ");
res += ">";
}
}
int i=0,j=0;
for (i = 0; i < res.length(); i++) {
for (j = i+1; j < res.length(); j++) {
if (Pair(res[i], res[j])) {
res[i] = ' ';
res[j] = ' ';
}
}
}
int flag = 1;
for (int i = 0; i < res.length(); i++) {
if (res[i] != ' ') {
cout << "NO" << endl;
if (res[i] == ')' || res[i] == ']' || res[i] == '}')
cout << "?-" << res[i];
else if (res[i] == '(' || res[i] == '[' || res[i] == '{')
cout << res[i] << "-?";
else if (res[i] == '<')
cout << "/*-?";
else if (res[i] == '>')
cout << "?-*/";
flag = 0;
break;
}
}
if (flag)
cout << "YES";
return 0;
}


IP属地:内蒙古1楼2021-05-08 14:25回复
    @水浪4ever


    IP属地:内蒙古2楼2021-05-10 12:24
    回复