关注
最后一题过了83%,实在不知道还有什么坑的。。反正直接导致了前两题没时间做了 = = #include <iostream>
#include <vector>
#include <map>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
string ss;
string opst[1005];
int oppos;
string allst[1005];
int allpos;
int start, len;
string numst[1005];
int numpos;
map<char, int> opma;
bool ischar(char c) {
if (c >= 'a' && c <= 'z') return true;
if (c >= 'A' && c <= 'Z') return true;
if (c >= '0' && c <= '9') return true;
return false;
}
bool isnum(string s) {
if (s.length() > 1) return true;
if (ischar(s[0])) return true;
return false;
}
string fan(string s) {
for (int i = 0; i < s.length(); ++i) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] -= 'a' - 'A';
continue;
}
if (s[i] >= 'A' && s[i] <= 'Z') {
s[i] -= 'A' - 'a';
continue;
}
}
return s;
}
string fu(string s) {
string t(s.rbegin(), s.rend());
return t;
}
string chen(string s1, string s2) {
string rst = "";
rst += s1[0];
for (int i = 1; i < s1.length(); ++i) {
rst += s2;
rst += s1[i];
}
return rst;
}
string chu(string a, string b) {
int flag = 1, m;
while(flag) {
m = a.find(b);
if (m < 0) {
flag = false;
} else {
a.erase(m, b.length());
}
}
return a;
}
string jia(string a, string b) {
return a + b;
}
string jian(string a, string b) {
int flag = 1, m;
m = a.find(b);
if (m < 0) {
flag = false;
} else {
a.erase(m, b.length());
}
return a;
}
void solve() {
oppos = 0;
allpos = 0;
start = 0;
len = 0;
ss = chu(ss, "()");
if (ss[0] == '-') {
ss[0] = '=';
}
for (int i = 1; i < ss.length(); ++i) {
if (ss[i] == '-') {
if ((!ischar(ss[i-1])) && (ss[i-1]!=')')) {
ss[i] = '=';
}
}
}
for (int i = 0; i < ss.length(); ++i) {
if (ischar(ss[i])) {
len ++;
continue;
} else {
if (len != 0) {
allst[allpos ++] = ss.substr(start, len);
len = 0;
}
start = i + 1;
if (ss[i] == '~' || ss[i] == '=') {
opst[oppos ++] = ss.substr(i, 1);
continue;
}
if (ss[i] == '(') {
opst[oppos ++] = "(";
continue;
}
if (ss[i] == ')') {
while(opst[oppos - 1][0] != '(') {
allst[allpos ++] = opst[oppos - 1];
oppos --;
}
oppos --;
continue;
}
while(oppos > 0 && opma[ss[i]] < opma[opst[oppos - 1][0]]) {
allst[allpos ++] = opst[oppos - 1];
oppos --;
}
opst[oppos ++] = ss.substr(i, 1);
}
}
if (len != 0) {
allst[allpos ++] = ss.substr(start, len);
}
while(oppos > 0) {
allst[allpos ++] = opst[oppos - 1];
oppos --;
}
numpos = 0;
for (int i = 0; i < allpos; ++i) {
if (isnum(allst[i])) {
numst[numpos ++] = allst[i];
continue;
}
if (allst[i][0] == '~') {
numst[numpos - 1] = fan(numst[numpos - 1]);
continue;
}
if (allst[i][0] == '=') {
numst[numpos - 1] = fu(numst[numpos - 1]);
continue;
}
if (allst[i][0] == '*') {
numst[numpos - 2] = chen(numst[numpos - 2], numst[numpos - 1]);
numpos --;
continue;
}
if (allst[i][0] == '/') {
numst[numpos - 2] = chu(numst[numpos - 2], numst[numpos - 1]);
numpos --;
continue;
}
if (allst[i][0] == '+') {
numst[numpos - 2] = jia(numst[numpos - 2], numst[numpos - 1]);
numpos --;
continue;
}
if (allst[i][0] == '-') {
numst[numpos - 2] = jian(numst[numpos - 2], numst[numpos - 1]);
numpos --;
continue;
}
}
cout << numst[0] << endl;
}
int main() {
ios::sync_with_stdio(false);
//freopen("input.txt", "r", stdin);
opma['+'] = 1;
opma['-'] = 1;
opma['*'] = 2;
opma['/'] = 2;
opma['~'] = 3;
opma['='] = 3;
opma['('] = 0;
opma[')'] = 0;
cin >> ss;
solve();
return 0;
}
查看原帖
点赞 4
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
04-11 22:03
杭州师范大学 Web前端 点赞 评论 收藏
分享
查看26道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
- 1... AI Agent 面试 Top50 必刷题2.0W
- 2... 看不懂组内文档,实习怎么偷产出?8752
- 3... 解决了xd们,发了个dy曝光视频,十几万播放,直接让他火速联系我,赔我路费了,兄弟们碰到不公平的违法行为,一定要积极捍卫自己权益6078
- 4... 五月了,感觉实习很难找了6038
- 5... 妈妈只想要你快乐3884
- 6... 要对实习同事表白吗?3861
- 7... 26届双非本求职总结3603
- 8... 三段大厂,说下我见过的最低学历3214
- 9... 理性讨论,卷实习算不算工贼行为?3186
- 10... 实习一个星期,我因为只加了20分钟班被开除了3081
正在热议
更多
# 26届春招投递记录 #
36454次浏览 307人参与
# 你今年的平均薪资是多少? #
230138次浏览 1069人参与
# 如何成为1个AI工程师? #
5734次浏览 281人参与
# 携程笔试 #
180046次浏览 928人参与
# 27届实习投递记录 #
121695次浏览 1381人参与
# 我想象的实习vs现实的实习 #
340763次浏览 2316人参与
# 求职你最看重什么? #
170387次浏览 915人参与
# 秋招提前批,你开始投了吗 #
766627次浏览 8495人参与
# 工作丧失热情的瞬间 #
401265次浏览 2589人参与
# 要毕业了,再不说就来不及了 #
9177次浏览 154人参与
# 哪些公司校招卡第一学历 #
262454次浏览 879人参与
# 硬件人的简历怎么写 #
349637次浏览 3141人参与
# 国庆假期,给大脑放个假 #
26939次浏览 121人参与
# 你在职场上见过哪些“水货”同事 #
41991次浏览 179人参与
# 机械人的秋招小目标 #
32953次浏览 251人参与
# 面试被问第一学历差时该怎么回答 #
297176次浏览 2306人参与
# 你觉得机械有必要实习吗 #
89075次浏览 537人参与
# AI面会问哪些问题? #
136792次浏览 3681人参与
# 提名点击就挂的公司 #
146706次浏览 494人参与
# 听到哪句话就代表面试稳了or挂了? #
271346次浏览 1733人参与