Basic Calculator II

来源:互联网 发布:音乐录制软件 编辑:程序博客网 时间:2024/06/06 01:24

对此,就是理解思路,熟练无bug

public class Solution {    public int calculate(String s) {        int sign = 1;        int prev = 0;        int mulDiv = -1;        int res = 0;        for (int i = 0; i < s.length(); i++) {            if (Character.isDigit(s.charAt(i))) {                int num = s.charAt(i) - '0';                while (++i < s.length() && Character.isDigit(s.charAt(i))) {                    num = num * 10 + s.charAt(i) - '0';                }                --i;                if (mulDiv == 0) {                    prev = prev*num;                    mulDiv = -1;                } else if (mulDiv == 1) {                    prev = prev/num;                    mulDiv = -1;                } else {                    prev = num;                }            } else if (s.charAt(i) == '+') {                res = res + sign*prev;                sign = 1;            } else if (s.charAt(i) == '-') {                res = res + sign*prev;                sign = -1;            } else if (s.charAt(i) == '*') {                mulDiv = 0;            } else if (s.charAt(i) == '/') {                mulDiv = 1;            }        }        res = res + prev*sign;        return res;    }        // public int calculate(String s) {    //     int sign = 1;    //     int prev = 0;    //     int mulDiv = -1;    //     int res = 0;    //     for (int i = 0; i < s.length(); i++) {    //         if (Character.isDigit(s.charAt(i))) {    //             int num = s.charAt(i) - '0';    //             while (++i < s.length() && Character.isDigit(s.charAt(i))) {    //                 num = num*10 + s.charAt(i) - '0';    //             }    //             i--;    //             if (mulDiv == 0) {    //                 //res = res + prev*num;    //                 prev = prev*num;    //                 mulDiv = -1;    //             } else if (mulDiv == 1) {    //                 //res = res + prev/num;    //                 prev = prev/num;    //                 mulDiv = -1;    //             } else {    //                 prev = num;    //             }    //         } else if (s.charAt(i) == '+') {    //             res = res + sign*prev;    //             sign = 1;    //         } else if (s.charAt(i) == '-') {    //             res = res + sign*prev;    //             sign = -1;    //         } else if (s.charAt(i) == '*') {    //             mulDiv = 0;    //         } else if (s.charAt(i) == '/') {    //             mulDiv = 1;    //         }    //     }    //     res = res + prev*sign;    //     return res;    // }}


0 0
原创粉丝点击