当前位置: 首页 > news >正文

西安企业网站seo中国建设银行官网招聘信息

西安企业网站seo,中国建设银行官网招聘信息,北京公司注册代理,百度网站排名突然消失题目 请写一个整数计算器#xff0c;支持加减乘三种运算和括号。 示例1 输入#xff1a;“12” 返回值#xff1a;3示例2 输入#xff1a;“(2*(3-4))*5” 返回值#xff1a;-10示例3 输入#xff1a;“32*3*4-1” 返回值#xff1a;26 思路 经典的中缀表达式求值。…题目 请写一个整数计算器支持加减乘三种运算和括号。 示例1 输入“12” 返回值3示例2 输入“(2*(3-4))*5” 返回值-10示例3 输入“32*3*4-1” 返回值26 思路 经典的中缀表达式求值。常用思路将其转为后缀表达式后缀表达式的特点遇到运算符则将前两个数拿出来运算便于计算机计算边转边求值。读到左括号 ( 较为特殊读到左括号时直接入栈本题中运算符优先级左括号或栈顶为空、乘、加减 、右括号。读到右括号时一直出栈直到一个左括号出栈。 算法步骤 遍历字符串当 遍历到的字符是数字 时直接将其压入数字栈。否则当 遍历到的字符是运算符 时判断字符直到字符串读完 若符号栈为空则直接将其压入符号栈。若符号栈非空则判断符号栈栈顶的运算符优先级 若 遍历到的运算符符号的优先级 符号栈栈顶元素的优先级或符号栈空则将读取的运算符压入符号栈。若 遍历到的运算符符号的优先级 ≤ 符号栈栈顶元素的优先级则将其出栈并从数字栈弹出两个元素进行该运算先弹出的为右操作数后弹出的为左操作数将结果压入数字栈。 最后若符号栈非空则弹出栈顶元素并从数字栈弹出两个元素来进行该运算重复该操作直到符号栈空。符号栈为空后弹出数字栈栈顶元素作为结果。返回数值站栈顶元素作为最终结果。 int solve(string s) {stackchar sign;stackint num;for (int i 0; i s.length(); i) {//若当前遍历到的字符为数字则将连续的数放入val栈if (s[i] 0 s[i] 9) {int rear i;while ((rear 1) s.length() s[rear 1] 0 s[rear 1] 9) {rear;}int n 0;for (int j rear; j i; j--) {n (s[j] - 0) * pow(10, (rear - j));}i rear;num.push(n);}//【优先级较大】当前遍历到的字符为(、* 或 ops符号栈为空则将该符号压入符号栈else if (s[i] ( || s[i] *|| sign.size() 0 ){sign.push(s[i]);}//【优先级较小】当前遍历到的字符为、-else if (s[i] || s[i] -) {while (1) {if (sign.size() 0)break;if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}else if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else {break;}}sign.push(s[i]);}// 读到右括号时符号栈就一直出栈直到一个左括号出栈。else if (s[i] )) {while (1) {if (sign.size() 0) {break;}else if (sign.top() () {sign.pop();break;}else if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}}}}//最后若符号栈非空则弹出栈顶元素并从数字栈弹出两个元素来进行该运算。重复该操作直到符号栈空。while (sign.size() ! 0) {if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}}//弹出数字栈栈顶元素即得结果。return num.top(); }实例 #include iostream #include stack using namespace std;int solve(string s) {// write code herestackchar sign;stackint num;for (int i 0; i s.length(); i) {//若当前遍历到的字符为数字则将连续的数放入val栈if (s[i] 0 s[i] 9) {int rear i;while ((rear 1) s.length() s[rear 1] 0 s[rear 1] 9) {rear;}int n 0;for (int j rear; j i; j--) {n (s[j] - 0) * pow(10, (rear - j));}i rear;num.push(n);}//若 当前遍历到的字符为(、* 或 ops符号栈为空则将该符号压入符号栈else if (s[i] ( || s[i] *|| sign.size() 0 ){sign.push(s[i]);}//若 当前遍历到的字符为、-else if (s[i] || s[i] -) {while (1) {if (sign.size() 0)break;if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}else if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else {break;}}sign.push(s[i]);}else if (s[i] )) {while (1) {if (sign.size() 0) {break;}else if (sign.top() () {sign.pop();break;}else if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}}}}//最后若符号栈非空则弹出栈顶元素并从数字栈弹出两个元素来进行该运算。重复该操作直到符号栈空。while (sign.size() ! 0) {if (sign.top() ) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 n2);}else if (sign.top() -) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 - n2);}else if (sign.top() *) {sign.pop();int n2 num.top();num.pop();int n1 num.top();num.pop();num.push(n1 * n2);}}//弹出数字栈栈顶元素即得结果。return num.top(); }int main() {string mys 13*(52);cout mys solve(mys) endl;return 0; }
http://www.zqtcl.cn/news/886279/

相关文章:

  • 中铁建设集团有限公司官方网站wordpress质感
  • 那个网站点击率高pc网站自动生成app
  • 东莞营销型网站建站淘金企业网站建设
  • 怎么用模板做网站手机python编程软件
  • 做视频网站都需要什么软件下载广东网站建设哪家专业
  • 开淘宝的店铺网站怎么做网页设计需要学什么书
  • 如何做收费网站微信小程序开发教程详解
  • 软件下载网站如何履行安全管理义务网站合同书
  • 普宁17网站一起做淘宝网站建设 丽水
  • 网站注册需要多少钱wordpress缓存失败
  • 西安h5响应式网站施工企业安全生产管理规范最新版
  • 电商平台网站建设如何安装网站模版
  • wordpress攻击跳转seo营销软件
  • 广东中山市做网站python做的网站如何部署
  • VPS做镜像网站wordpress 安装七牛
  • 雄安做网站优化的公司小程序开发公司哪里强
  • 做的网站没有注册国家建设部网站倪虹
  • 中英文网站怎么实现做网站有名的公司
  • 先网站开发后软件开发显示网站运行时间代码
  • 品牌网站制作流程图百度网页版入口页
  • 哪些人需要做网站网站开发工程师 招聘
  • 东莞网站建设多长时间如何将网址提交到一些权重比较高的网站
  • 阳江网站seo公司wordpress建站博客
  • 我想做京东网站淘宝怎么做的wordpress淘宝联盟转链
  • 虚拟钱包对接网站开发视频教程营销型网站建设要懂代码吗
  • 莱州教育网站一站式网站搭建
  • 开发网站开票名称是什么捕鱼游戏网站开发商
  • 我国中小企业网站建设怎样办自己的网站
  • 如何推广自己网站链接通化北京网站建设
  • 小型的游戏网站怎么做WordPress设置作者信息