zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 640 求解方程(计算器的加减法计算)

    640. 求解方程

    求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含’+’,’ - '操作,变量 x 和其对应系数。

    如果方程没有解,请返回“No solution”。

    如果方程有无限解,则返回“Infinite solutions”。

    如果方程中只有一个解,要保证返回值 x 是一个整数。

    示例 1:
    
    输入: "x+5-3+x=6+x-2"
    输出: "x=2"
    示例 2:
    
    输入: "x=x"
    输出: "Infinite solutions"
    示例 3:
    
    输入: "2x=x"
    输出: "x=0"
    示例 4:
    
    输入: "2x+3x-6x=x+2"
    输出: "x=-1"
    示例 5:
    
    输入: "x=x+2"
    输出: "No solution"
    

    PS:
    标记一下正负,再用一个指针指到数字的第一位

    class Solution {
          public String solveEquation(String equation) {
            int coff = 0, sum = 0, index = 0, sign = 1;
            int n = equation.length();
    
            for(int i=0;i<n;i++){
                char c = equation.charAt(i);
                if(c == '='){
                    if(index < i){
                        sum += Integer.valueOf(equation.substring(index, i)) * sign;
                    }
                    sign = -1;
                    index = i + 1;
                }else if(c == 'x'){
                    if(index == i || equation.charAt(i - 1) == '+'){
                        coff += sign;
                    }else if(equation.charAt(i - 1) == '-'){
                        coff -= sign;
                    }else{
                        coff += Integer.valueOf(equation.substring(index, i)) * sign;
                    }
                    index = i+1;
                }else if(c == '-' || c == '+'){
                    if(index < i){
                        sum += Integer.valueOf(equation.substring(index, i)) * sign;
                    }
                    index = i;
                }
            }
    
            if(index < n){
                sum += Integer.valueOf(equation.substring(index)) * sign;
            }
    
            if(sum == 0 && coff == 0) return "Infinite solutions";
            if(coff == 0) return "No solution";
            return "x=" + String.valueOf(-sum / coff);
        }
    }
    
  • 相关阅读:
    Python 2 中的编码
    奇异值分解及其应用
    c#基础系列3---深入理解ref 和out
    c#基础系列2---深入理解 String
    c#基础系列1---深入理解值类型和引用类型
    广州.NET微软技术俱乐部微信群有用信息集锦(10)
    程序员英语二三事(3)
    BDD实战篇
    BDD实战篇
    广州.NET微软技术俱乐部
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074857.html
Copyright © 2011-2022 走看看