原理
流程
照着这个流程写的代码
//
// Created by admin on 2020/12/7.
//
#include "iostream"
#include "cstdio"
#include "stack"
#include "vector"
using namespace std;
int num(char str){
return str-'0';
}
int main(){
string str;
cin>>str;
stack<char> a;
vector<char> b;
for (int i=0;i<str.size();i++){
if(str[i]<='z'&&str[i]>='a'){
b.push_back(str[i]);
}
else if(str[i]=='('||a.empty()){
a.push(str[i]);
}
else if (str[i]=='+'||str[i]=='-'){
while(true){
if(a.empty()||a.top()=='('){
a.push(str[i]);
break;
}
else if(a.top()=='*'||a.top()=='/'){
b.push_back(a.top());
a.pop();
}
else if(a.top()=='+'||a.top()=='-'){
b.push_back(a.top());
a.pop();
a.push(str[i]);
break;
}
}
}
else if(str[i]=='*'||str[i]=='/'){
if(a.top()=='('||a.empty()||a.top()=='+'||a.top()=='-'){
a.push(str[i]);
}
else if(a.top()=='*'||a.top()=='/'){
b.push_back(a.top());
a.pop();
a.push(str[i]);
}
}
else if (str[i]==')'){
while(a.top()!='('){
b.push_back(a.top());
a.pop();
}
a.pop();
}
}
while(!a.empty()){
b.push_back(a.top());
a.pop();
}
for (int i=0;i<b.size();i++){
printf("%c",b[i]);
}
return 0;
}
//1+2*3+(4*5+6)*7
验证
去牛客网提交代码
https://www.nowcoder.com/questionTerminal/4e7267b55fdf430d9403aa12206572b3
这个题目没有要求带括号,但没关系。