[LeetCode]640解方程式

代码先放着,回去待会再来写思路,用了15ms,成绩不理想

public  static String solveEquation(String equation) {
        String[] split = equation.split("=");
        int[] left = findPreNumSum(split[0]);
        int[] right = findPreNumSum(split[1]);
        if (left[0]==right[0]&&left[1]==right[1])
            return "Infinite solutions";
        else if (left[0]==right[0]&&left[1]!=right[1]){
            return "No solution";
        }else {
            return "x="+(right[1]-left[1])/(left[0]-right[0]);
        }
    }
    public static int[] findPreNumSum(String s){
        int x_sum = 0;
        int integerSum = 0;
        int length = s.length();
        for (int i = 0;i < length;i++){
            char it = s.charAt(i);
            char pre = i>0?s.charAt(i-1):'n';
            char next = i>length-2?'n':s.charAt(i+1);
            if(it=='+'||it=='-')
                continue;
            if (it == 'x'||it=='X'){
                if (pre=='n'){
                    x_sum = x_sum + 1;
                }else {
                    int count = 1;
                    int sum = 0;
                    int j;
                    for (j = i-1;;){
                        if(j<0||s.charAt(j)=='+'||s.charAt(j)=='-'){
                            if (i-j==1&&(s.charAt(j)=='+'||s.charAt(j)=='-')){
                                x_sum = x_sum + (s.charAt(j)=='+'?1:(-1));
                                System.out.println(x_sum);
                            }
                            count = 1;
                            break;
                        }
                        sum = sum + (s.charAt(j)-'0')*count;
                        count = count * 10;
                        j--;

                    }
                    x_sum = x_sum + ((j==-1||s.charAt(j)=='+')?1:(-1))*sum;
                    count = 1;
                    sum = 0;
                }
            }else {
                if (('0'<=next&&next<='9')||next=='x')
                    continue;
                int count = 1;
                int sum = 0;
                int j;
                for (j = i;;){
                    if(j<0||s.charAt(j)=='+'||s.charAt(j)=='-'){
                        count = 1;
                        break;
                    }
                    sum = sum + (s.charAt(j)-'0')*count;
                    count = count * 10;
                    j--;
                }
                integerSum = integerSum + ((j==-1||s.charAt(j)=='+')?1:(-1))*sum;
                count = 1;
                sum = 0;
            }
        }
        System.out.println(x_sum+"-"+integerSum);
        return new int[]{x_sum,integerSum};
    }

  

猜你喜欢

转载自www.cnblogs.com/Yintianhao/p/9892752.html