Java实现 LeetCode 640 求解方程(计算器的加减法计算)

港控/mmm° 2023-07-20 12:26 107阅读 0赞

640. 求解方程

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

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

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

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

  1. 示例 1
  2. 输入: "x+5-3+x=6+x-2"
  3. 输出: "x=2"
  4. 示例 2:
  5. 输入: "x=x"
  6. 输出: "Infinite solutions"
  7. 示例 3:
  8. 输入: "2x=x"
  9. 输出: "x=0"
  10. 示例 4:
  11. 输入: "2x+3x-6x=x+2"
  12. 输出: "x=-1"
  13. 示例 5:
  14. 输入: "x=x+2"
  15. 输出: "No solution"

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

  1. class Solution {
  2. public String solveEquation(String equation) {
  3. int coff = 0, sum = 0, index = 0, sign = 1;
  4. int n = equation.length();
  5. for(int i=0;i<n;i++){
  6. char c = equation.charAt(i);
  7. if(c == '='){
  8. if(index < i){
  9. sum += Integer.valueOf(equation.substring(index, i)) * sign;
  10. }
  11. sign = -1;
  12. index = i + 1;
  13. }else if(c == 'x'){
  14. if(index == i || equation.charAt(i - 1) == '+'){
  15. coff += sign;
  16. }else if(equation.charAt(i - 1) == '-'){
  17. coff -= sign;
  18. }else{
  19. coff += Integer.valueOf(equation.substring(index, i)) * sign;
  20. }
  21. index = i+1;
  22. }else if(c == '-' || c == '+'){
  23. if(index < i){
  24. sum += Integer.valueOf(equation.substring(index, i)) * sign;
  25. }
  26. index = i;
  27. }
  28. }
  29. if(index < n){
  30. sum += Integer.valueOf(equation.substring(index)) * sign;
  31. }
  32. if(sum == 0 && coff == 0) return "Infinite solutions";
  33. if(coff == 0) return "No solution";
  34. return "x=" + String.valueOf(-sum / coff);
  35. }
  36. }

发表评论

表情:
评论列表 (有 0 条评论,107人围观)

还没有评论,来说两句吧...

相关阅读