关注
最后一题过了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
相关推荐
点赞 评论 收藏
分享
11-17 18:24
哈尔滨工业大学 数据分析师 程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 27届学院二本,袋鼠云->快手->腾讯wxg,25年末聊聊我的前端之路2.1W
- 2... 本科五段大厂实习,秋招五个offer,我的校招结束了5610
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?5450
- 4... 适可而止吧!你就是“烂泥”5291
- 5... 大四双非水产专业上岸阿里后端(五)4703
- 6... 我的世界观,就是对抗优绩主义的武器3135
- 7... 27双非杀入字节!2645
- 8... 双非计算机秋招总结,附带一些个人建议2454
- 9... 实习被“放养”零产出,该及时止损还是继续苟着?1333
- 10... 日常实习-小红书后端java二面1311
正在热议
更多
# 实习没人带,苟住还是跑路? #
1674次浏览 58人参与
# 过年期间可能会经历的尴尬瞬间 #
48474次浏览 311人参与
# 元旦假期你打算怎么过 #
2350次浏览 79人参与
# 工作中的卑微时刻 #
29733次浏览 184人参与
# 我们是不是被“优绩主义”绑架了? #
3925次浏览 166人参与
# 如何看待应届生身份? #
210698次浏览 2233人参与
# 从夯到拉,评价编程语言 #
27728次浏览 147人参与
# 多益网络工作体验 #
60115次浏览 299人参与
# 牛客2025仙途报告 #
19809次浏览 314人参与
# 机械制造面试记录 #
299770次浏览 3143人参与
# 实习心态崩了 #
96489次浏览 494人参与
# 华为工作体验 #
277115次浏览 1355人参与
# 查收我的offer竞争力报告 #
263707次浏览 1644人参与
# 你有哪些缓解焦虑的方法? #
44741次浏览 873人参与
# 找工作,行业重要还是岗位重要? #
88170次浏览 1767人参与
# 华为池子有多大 #
154472次浏览 867人参与
# 今年你最想重开的一场面试是? #
17061次浏览 171人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105283次浏览 1647人参与
# 牛友打假中心 #
109797次浏览 2699人参与
# 牛友们的论文几号送审 #
63211次浏览 835人参与
