BM49 表达式求值

java 复制代码
import java.util.*;
public class Solution {
    public ArrayList<Integer> function(String s, int index){
        Stack<Integer> stack = new Stack<Integer>(); 
        int num = 0;
        char op = '+';
        int i;
        for(i = index; i < s.length(); i++){
            if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){ 
                num = num * 10 + s.charAt(i) - '0';
                if(i != s.length() - 1)
                    continue;
            }
            if(s.charAt(i) == '('){
                ArrayList<Integer> res = function(s, i + 1);
                num = res.get(0);
                i = res.get(1);
                if(i != s.length() - 1)
                    continue;
            }            
            switch(op){
            case '+': 
                stack.push(num);
                break;
            case '-':
                stack.push(-num);
                break;
            case '*':  
                int temp = stack.pop();
                stack.push(temp * num);
                break;
            }
            num = 0;
            if(s.charAt(i) == ')') 
                break; 
            else 
                op = s.charAt(i);
        }
        int sum = 0;
        while(!stack.isEmpty())  
            sum += stack.pop();
        ArrayList<Integer> temp = new ArrayList<Integer>();
        temp.add(sum);
        temp.add(i);
        return temp; 
    }
    public int solve (String s) {
        ArrayList<Integer> res = function(s, 0);
        return res.get(0);
    }
}
相关推荐
NAGNIP8 小时前
大模型框架性能优化策略:延迟、吞吐量与成本权衡
算法
美团技术团队9 小时前
LongCat-Flash:如何使用 SGLang 部署美团 Agentic 模型
人工智能·算法
Fanxt_Ja14 小时前
【LeetCode】算法详解#15 ---环形链表II
数据结构·算法·leetcode·链表
侃侃_天下14 小时前
最终的信号类
开发语言·c++·算法
茉莉玫瑰花茶14 小时前
算法 --- 字符串
算法
博笙困了14 小时前
AcWing学习——差分
c++·算法
NAGNIP14 小时前
认识 Unsloth 框架:大模型高效微调的利器
算法
NAGNIP14 小时前
大模型微调框架之LLaMA Factory
算法
echoarts14 小时前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Python技术极客15 小时前
一款超好用的 Python 交互式可视化工具,强烈推荐~
算法