1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <bits/stdc++.h> using namespace std;
int main(){ map<char,int> mp{{'+',1},{'-',1},{'*',2},{'/',2},{'(',0}}; string s;cin>>s; stack<char> st; int len = s.size(); for(int i=0;i<len;i++){ if(s[i]=='(')st.push('('); else if(s[i]==')'){ while(!st.empty()&&st.top()!='('){ cout<<st.top(); st.pop(); } st.pop(); } else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/'){ while(!st.empty() && mp[st.top()]>=mp[s[i]]){ cout<<st.top(); st.pop(); } st.push(s[i]); } else cout<<s[i]; } while(!st.empty()){ cout<<st.top(); st.pop(); } cout<<endl; }
|