豆包MarsCode代码练习体验心得

200 阅读2分钟

在使用豆包解决这题:简单四则运算(里面包含了具体的要求)

问题描述

实现一个基本的计算器来计算一个简单的字符串表达式的值。注意事项如下:

  • 输入是一个字符串表达式(可以假设所给定的表达式都是有效的)

  • 字符串表达式可以包含的运算符号为:左括号 (, 右括号 ), 加号 +, 减号 -

  • 可以包含的数字为:非负整数(< 10)

  • 字符串中不包含空格

  • 处理除法 case 的时候,可以直接省略小数部分结果,只保留整数部分参与后续运算

  • 请不要使用内置的库函数 eval

输入格式

如:3+4*5/(3+2)

数据约束

见题目描述

输出格式

计算之后的数字

输入样例

  • 1+1
  • 3+4*5/(3+2)
  • 4+2*5-2/1
  • (1+(4+5+2)-3)+(6+8)

输出样例

  • 2
  • 7
  • 12
  • 23

我在拿到题目之后只需要把题目放到豆包的AI助手中,他就会自动帮我生成完整代码,非常好用

以下是帮我生成的代码,运行后完美解决该问题

`import java.util.Stack;

public class Main { public static int solution(String expression) { Stack numStack = new Stack<>(); Stack opStack = new Stack<>();

    for (int i = 0; i < expression.length(); i++) {
        char c = expression.charAt(i);

        if (Character.isDigit(c)) {
            int num = c - '0';
            numStack.push(num);
        } else if (c == '(') {
            opStack.push(c);
        } else if (c == ')') {
            while (opStack.peek()!= '(') {
                int num2 = numStack.pop();
                int num1 = numStack.pop();
                char op = opStack.pop();
                int result = performOperation(num1, num2, op);
                numStack.push(result);
            }
            opStack.pop();
        } else if (c == '+' || c == '-' || c == '*' || c == '/') {
            while (!opStack.isEmpty() && precedence(c) <= precedence(opStack.peek())) {
                int num2 = numStack.pop();
                int num1 = numStack.pop();
                char op = opStack.pop();
                int result = performOperation(num1, num2, op);
                numStack.push(result);
            }
            opStack.push(c);
        }
    }

    while (!opStack.isEmpty()) {
        int num2 = numStack.pop();
        int num1 = numStack.pop();
        char op = opStack.pop();
        int result = performOperation(num1, num2, op);
        numStack.push(result);
    }

    return numStack.pop();
}

public static int precedence(char op) {
    if (op == '+' || op == '-') {
        return 1;
    } else if (op == '*' || op == '/') {
        return 2;
    }
    return 0;
}

public static int performOperation(int num1, int num2, char op) {
    switch (op) {
        case '+':
            return num1 + num2;
        case '-':
            return num1 - num2;
        case '*':
            return num1 * num2;
        case '/':
            return num1 / num2;
    }
    return 0;
}

public static void main(String[] args) {
    // You can add more test cases here
    System.out.println(solution("1+1") == 2);
    System.out.println(solution("3+4*5/(3+2)") == 7);
    System.out.println(solution("4+2*5-2/1") == 12);
    System.out.println(solution("(1+(4+5+2)-3)+(6+8)") == 23);
}

}`

现在豆包还可以再idea中使用只需要安装插件

image.png 安装后

image.png

右侧就会出现这个AI,不用离开编译器就可以问问题,解决了很多开发时间,提供了便利,一直在用.