竞赛讨论区 > 第三题 不知道被什么数据卡了 求大佬
头像
hadwinjia
发布于 2020-12-03 20:58
+ 关注

第三题 不知道被什么数据卡了 求大佬

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 给定一个后缀表达式,返回它的结果
     * @param str string字符串 
     * @return long长整型
     */
    public long solve(String str) {
            // write code here
            ArrayList<Long> num = new ArrayList();
            ArrayList<Character> operator = new ArrayList();
            int i = 0;
            if (str.length() == 1) {
                return Long.parseLong(str);
            }
            while (!str.isEmpty()) {
                if (str.charAt(i) == '#') {
                    String s = str.substring(0, i);
                    num.add(Long.parseLong(s));
                    str = str.substring(i + 1);
                    i = 0;
                }
                if (str.equals("")) break;
                if (str.charAt(i) == '+' || str.charAt(i) == '-' || str.charAt(i) == '*') {
                    operator.add(str.charAt(i));
                    str = str.substring(i + 1);
                    i = 0;
                }
                i++;
            }
            //operator.add(0, '+');

            while (!num.isEmpty() && !operator.isEmpty()) {
                long t1 = num.get(0);
                long t2 = num.get(1);
                num.remove(0);
                num.remove(0);
                char op = operator.get(0);
                operator.remove(0);
                if (op == '+') {
                    long t = t1 + t2;
                    num.add(0, t);
                } else if (op == '-') {
                    long t = t1 - t2;
                    num.add(0, t);
                } else if (op == '*') {
                    long t = t1 * t2;
                    num.add(0, t);
                }
            }
            long ans = num.get(0);
            return ans;
        }
}

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐