news 2026/7/8 11:51:05

表达式求值

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
表达式求值

求解代码

HashMap<Character,Integer>map=newHashMap<Character,Integer>(){{put('+',1);put('-',1);put('*',2);}};voidcalc(LinkedList<Integer>nums,LinkedList<Character>operators){if(nums.isEmpty()||nums.size()<2){return;}if(operators.isEmpty()){return;}intb=nums.pollLast();inta=nums.pollLast();charoperator=operators.pollLast();intres=0;if(operator=='+'){res=a+b;}elseif(operator=='-'){res=a-b;}elseif(operator=='*'){res=a*b;}nums.addLast(res);}publicintsolve(Strings){s=s.replaceAll(" ","");char[]str=s.toCharArray();intn=s.length();LinkedList<Integer>nums=newLinkedList<>();LinkedList<Character>operators=newLinkedList<>();nums.addLast(0);for(inti=0;i<n;i++){charc=str[i];if(c=='('){operators.addLast(c);}elseif(c==')'){while(!operators.isEmpty()){if(operators.peekLast()!='('){calc(nums,operators);}else{operators.pollLast();break;}}}else{if(Character.isDigit(c)){intbase=0;intj=i;while(j<n&&Character.isDigit(str[j])){base=base*10+(str[j++]-'0');}nums.addLast(base);i=j-1;}else{if(i>0&&(str[i-1]=='('||str[i-1]=='+'||str[i-1]=='-')){nums.addLast(0);}while(!operators.isEmpty()&&operators.peekLast()!='('){charprev=operators.peekLast();if(map.get(prev)>=map.get(c)){calc(nums,operators);}else{break;}}operators.addLast(c);}}}while(!operators.isEmpty()&&operators.peekLast()!='('){calc(nums,operators);}returnnums.peekLast();}

小贴士

1.nums.addLast(0)主要用于处理【表达式以正负号开头】的场景,比如-1+2+3*4,可以把-1转为0-1,把+3转为0+3

2.i = j - 1可以修正外层for循环的索引i,让i直接跳到「当前多位数的最后一位」,抵消for循环的自动i++,避免重复遍历已经处理过的数字字符。、

比如表达式123+4,j=3

执行i = j - 1 → i = 3 - 1 = 2,然后,外层for循环执行自动i++ → i2变成3,下一轮循环,i=3,正好读取字符str[3] → '+'

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 14:23:05

先知AI如何破解男装行业的数据迷局?

在数字化浪潮席卷之下&#xff0c;男装行业正面临前所未有的挑战与机遇。库存积压、设计同质化、消费者需求难以精准捕捉&#xff0c;成为许多企业增长的绊脚石。北京先智先行科技有限公司敏锐洞察到这一痛点&#xff0c;凭借其深厚的行业积累与人工智能技术&#xff0c;推出了…

作者头像 李华
网站建设 2026/7/1 7:40:40

多变量单步时序预测 | TCN-LSTM时序卷积网络长短期记忆网络时间序列预测MATLAB代码

一、研究背景 本代码实现了一种TCN-LSTM混合神经网络模型,用于时间序列预测任务。TCN(时序卷积网络)具有并行计算能力强、感受野可控的优点,LSTM(长短期记忆网络)则擅长捕捉长期依赖关系。两者结合旨在提升时间序列预测的精度与稳定性。 二、主要功能 从Excel文件中读取…

作者头像 李华
网站建设 2026/7/1 7:42:33

多变量单步时序预测 | TCN-BiLSTM时序卷积网络双向长短期记忆网络时间序列预测MATLAB代码

一、研究背景 该代码实现了一种 TCN-BiLSTM 混合神经网络模型,用于时间序列预测任务。TCN(时序卷积网络)能够有效提取局部时序特征并控制感受野,而双向LSTM(BiLSTM) 则能同时利用过去与未来的信息,增强序列建模的双向依赖关系,尤其适用于具有前后文依赖的时间序列预测…

作者头像 李华
网站建设 2026/7/1 7:41:10

互联网核心系统架构白皮书:从 MySQL 到千万 QPS 的全链路工程体系

流量工程 缓存体系 写削峰 CQRS 异构存储 事件驱动 金融级稳定性设计 一、什么才是真正的“千万 QPS”? 先给出一个行业级结论: 千万 QPS 从来不是 MySQL 的能力,而是整个系统工程能力。 MySQL 在真正的千万 QPS 架构中,只承担 0.1%~1% 的请求量。 真实系统 QPS 分担…

作者头像 李华
网站建设 2026/7/6 11:46:39

NVIDIA点燃HBM4竞速赛:12层量产前夜,16层博弈定生死

CES 2026的舞台上,NVIDIA新一代Rubin GPU的亮相,不仅宣告了AI算力的又一次跃迁,更将HBM的竞争推向了白热化。(2026Q1 3D NAND价格翻倍|NV引爆AI存储行情-万字研究报告) 作为当前HBM4的独家初始客户,NVIDIA对每引脚速度超11Gbps的硬性要求,直接改写了SK海力士、三星、美…

作者头像 李华
网站建设 2026/7/1 14:10:25

GESP认证C++编程真题解析 | B4262 [GESP202503 三级] 词频统计

​欢迎大家订阅我的专栏&#xff1a;算法题解&#xff1a;C与Python实现&#xff01; 本专栏旨在帮助大家从基础到进阶 &#xff0c;逐步提升编程能力&#xff0c;助力信息学竞赛备战&#xff01; 专栏特色 1.经典算法练习&#xff1a;根据信息学竞赛大纲&#xff0c;精心挑选…

作者头像 李华