网站二级域名设置wordpress侧边栏制作
2025/12/30 10:06:59 网站建设 项目流程
网站二级域名设置,wordpress侧边栏制作,给企业做网站前景,广东微信网站制作公司哪家好Problem: 770. Basic Calculator IV 基本计算器 IV 解题过程 困难题#xff0c;步骤太多了#xff0c;多项式加法和乘法#xff0c;写了300多行的codes#xff0c;平时就几十行#xff0c;首先放入列表中#xff0c;将字符串、运算符号全部放入列表中#xff0c;当字符是…Problem: 770. Basic Calculator IV 基本计算器 IV解题过程困难题步骤太多了多项式加法和乘法写了300多行的codes平时就几十行首先放入列表中将字符串、运算符号全部放入列表中当字符是(时入栈找到)然后递归调用拿到列表以后将-号全部放入到数字或者字符串内就开始运算实现了多项式加法和乘法每次算完就替换掉并且删除两个继续运算的加法数字单独考虑两个多项式若都是数字直接累加若都是变量则提取出系数和字符串系数累加的若是没找到匹配的就是累加到数字或者放入结果列表中若是数字0则放入列表乘法数字单独考虑若都是变量则提取出系数和字符串系数累加的字符串根据字典序排列并用*号拼接起来若一个变量一个数字则系数累乘的而且字符串不变还需要考虑结果列表中有相同字符串的结果此时需要合并起来也就是系数累加起来若是没找到匹配的就是累加到数字或者放入结果列表中若是数字0则放入列表还需要考虑结果是0的情况此时也放入列表中当作占位符最后删掉即可排序的时候统计*号的个数*号越多越靠前否则按照字典序排序数字排在最后Codeclass Solution { public: unordered_mapstring, int ump; int findparentheses(string expression, int start) { stackchar tk; tk.push((); for(int i start; i expression.size(); i) { if(expression[i]() tk.push((); else if(expression[i])) tk.pop(); if(tk.empty()) { return i; } } return 0; } vectorstring dfs(string expression) { string tmp; vectorvectorstring tk; for(int i 0; i expression.size(); i) { if(isalpha(expression[i])||isdigit(expression[i])|| expression[i]-||expression[i]||expression[i]*) { tmp expression[i]; } if(expression[i] || i expression.size()-1) { if(ump.find(tmp) ! ump.end()) { tk.push_back( { to_string( ump[tmp] ) } ); } else { tk.push_back({tmp}); } int n tk.size(); if(tk[n-1][0]! tk[n-1][0]!- tk[n-1][0]!* !isNum(tk[n-1][0])) { tk[n-1][0] {1* tk[n-1][0]}; } tmp.clear(); }else if(expression[i]() { int j findparentheses(expression, i1); string tmptg expression.substr(i1, j - i - 1); vectorstring trtg dfs(tmptg); if(trtg.size() 0) { tk.push_back(trtg); } else { tk.push_back({0}); } i j 1; } } for(int j 0; j tk.size()-1; j) { if(j (int)tk.size()-1) { break; } if(tk[j][0].size()1 tk[j][0]-) { tk[j][0] {}; for(int k 0; k tk[j1].size(); k) { if(isNum(tk[j1][k])) { if(tk[j1][k][0]!-) { tk[j1][k] - tk[j1][k]; } else { tk[j1][k] tk[j1][k].substr(1); } } else { int id tk[j1][k].find(*); string tri tk[j1][k].substr(id1); if(tk[j1][k][0]!-) { tk[j1][k] - tk[j1][k]; } else { tk[j1][k] tk[j1][k].substr(1); } } } } } if(tk.size() 0 tk.front()[0] ) { tk.erase(tk.begin()); } for(int i tk.size()-2; i 0; i--) { //// (av * 9) - (ar 0) - ((bq - cv) v * (b bq - bk)) * (a - 12 2 - (6 * cc - 8 - bv ag)) if(i - 2 0 tk[i-2].size()1 tk[i-2][0]*) { vectorstring tgt multiply(tk[i-3], tk[i-1]); // tk[i-1] tgt; if(tgt.size() 0) { tk[i-1] tgt; } else { tk[i-1] {0}; } tk.erase(tk.begin() i - 3); tk.erase(tk.begin() i - 3); i--; }else if(tk[i].size()1 (tk[i][0] || tk[i][0]- || tk[i][0]*)) { vectorstring tgt; if(tk[i][0]){ tgt add_sub(tk[i-1], tk[i1], 1); } else if(tk[i][0]*){ tgt multiply(tk[i-1], tk[i1]); } if(tgt.size() 0) { tk[i1] tgt; } else { // tk.erase(tk.begin() i 1); tk[i1] {0}; } tk.erase(tk.begin() i - 1); tk.erase(tk.begin() i - 1); i--; } if(tk.size() 1) break; } if(tk.size()0) return {}; if(tk[0][0]0) return {}; return tk[0]; } bool isNum(string t) { for(char c : t) { if(ca cz) { return false; } } return true; } vectorstring add_sub(vectorstringa, vectorstringc, int type) { vectorstring ret; unordered_setint te; int number 0; for(int i 0; i a.size(); i) { int find -100; for(int j 0; j c.size(); j) { if(te.find(j)!te.end()) continue; if(isNum(a[i]) isNum(c[j])) { te.insert(j); find 1; int n1 stoi(a[i]); int n2 stoi(c[j]); if(type 0) { number number n1 - n2; } else { number number n1 n2; } } else { int id1, id2; string t1, t2, p1, p2; id1 a[i].find(*); id2 c[j].find(*); if(id1!string::npos id2!string::npos) { t1 a[i].substr(id1); t2 c[j].substr(id2); p1 a[i].substr(0, id1); p2 c[j].substr(0, id2); if(t1t2) { int nt; if(type 0) { nt stoi(p1) - stoi(p2); } else { nt stoi(p1) stoi(p2); } a[i] to_string(nt) t1; find 0; te.insert(j); } } } } if(find 0) { if(isNum(a[i])) number stoi(a[i]); else ret.push_back(a[i]); } else if(find0) { int id1 a[i].find(*); if(id1!string::npos) { string t1 a[i].substr(0, id1); if(stoi(t1)!0) { ret.push_back(a[i]); } } } } for(int j 0; j c.size(); j) { if(te.find(j)!te.end()) continue; ret.push_back(c[j]); } if(number!0) { ret.push_back(to_string(number)); } return ret; } vectorstring multiply(vectorstringa, vectorstringc) { vectorstring ret; int number 0; for(int i 0; i a.size(); i) { for(int j 0; j c.size(); j) { if(isNum(a[i]) isNum(c[j])) { int n1 stoi(a[i]); int n2 stoi(c[j]); number number n1 * n2; } else { int id1, id2; string t1, t2, p1, p2; id1 a[i].find(*); id2 c[j].find(*); if(id1!string::npos id2!string::npos) { t1 a[i].substr(id1); t2 c[j].substr(id2); p1 a[i].substr(0, id1); p2 c[j].substr(0, id2); vectorstring testr; string tmptmp; for(int k 0; k t1.size(); k) { if(t1[k]!*) { tmptmp t1[k]; } if((t1[k]*||kt1.size()-1) tmptmp.size()!0) { testr.push_back(tmptmp); tmptmp.clear(); } } tmptmp.clear(); for(int k 0; k t2.size(); k) { if(t2[k]!*) { tmptmp t2[k]; } if((t2[k]*||kt2.size()-1) tmptmp.size()!0) { testr.push_back(tmptmp); tmptmp.clear(); } } tmptmp.clear(); sort(testr.begin(), testr.end()); for(auto tg : testr) { tmptmp tmptmp * tg; } int nt; nt stoi(p1) * stoi(p2); for(int k 0; k ret.size(); k) { id2 ret[k].find(*); if(id2 ! string::npos) { p2 ret[k].substr(0, id2); t2 ret[k].substr(id2); if(t2 tmptmp) { nt nt stoi(p2); ret.erase(ret.begin() k); break; } } } if(nt!0) ret.push_back(to_string(nt) tmptmp); } else { if(id1!string::npos id2string::npos) { t1 a[i].substr(id1); t2 ; p1 a[i].substr(0, id1); p2 c[j]; } else { t1 ; t2 c[j].substr(id2); p1 a[i]; p2 c[j].substr(0, id2); } string tmptmp t1 t2; int nt; nt stoi(p1) * stoi(p2); for(int k 0; k ret.size(); k) { id2 ret[k].find(*); if(id2 ! string::npos) { p2 ret[k].substr(0, id2); t2 ret[k].substr(id2); if(t2 tmptmp) { nt nt stoi(p2); ret.erase(ret.begin() k); break; } } } if(nt!0) ret.push_back(to_string(nt) tmptmp); } } } } if(number!0) { ret.push_back(to_string(number)); } return ret; } static bool compare(stringas, string cs) { int id1, id2, n1 0, n2 0; string tt1, tt2; id1 as.find(*); id2 cs.find(*); if(id1!string::npos id2!string::npos) { for(int i id1; i as.size(); i) { if(as[i]*) n1; // else tt1 as[i]; } for(int i id2; i cs.size(); i) { if(cs[i]*) n2; // else tt2 cs[i]; } tt1 as.substr(id11); tt2 cs.substr(id21); if(n1n2) return tt1 tt2; else return n1 n2; } else if(id1string::npos) { return false; } else { return true; } } vectorstring basicCalculatorIV(string expression, vectorstring evalvars, vectorint evalints) { for(int i 0; i evalvars.size(); i) { ump[evalvars[i]] evalints[i]; } vectorstring ret dfs(expression); for(int i 0; i ret.size(); i) { if(ret[i]0) { ret.erase(ret.begin() i); i--; } } if(ret.size()0) return {}; sort(ret.begin(), ret.end(), compare); return ret; } };

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询