• 640. 求解方程


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

    如果方程没有解,请返回 "No solution" 。如果方程有无限解,则返回 “Infinite solutions” 。

    题目保证,如果方程中只有一个解,则 'x' 的值是一个整数。

    示例 1:

    输入: equation = "x+5-3+x=6+x-2"
    输出: "x=2"
    示例 2:

    输入: equation = "x=x"
    输出: "Infinite solutions"
    示例 3:

    输入: equation = "2x=x"
    输出: "x=0"
     

    提示:

    3 <= equation.length <= 1000
    equation 只有一个 '='.
    equation 方程由整数组成,其绝对值在 [0, 100] 范围内,不含前导零和变量 'x' 。 
    ​​​

    1. class Solution {
    2. public String solveEquation(String equation) {
    3. int factor = 0;
    4. int val = 0;
    5. int sign1 = 1;
    6. int index = 0;
    7. int n = equation.length();
    8. while (index < n){
    9. if (equation.charAt(index) == '='){
    10. sign1 = -1;
    11. index ++;
    12. continue;
    13. }
    14. int sign2 = sign1;
    15. if (index < n && equation.charAt(index) == '-'){
    16. sign2 = -sign1;
    17. index ++;
    18. }else if (index < n && equation.charAt(index)== '+'){
    19. index ++;
    20. }
    21. int number = 0;
    22. boolean numberValid = false;
    23. while (index < n && Character.isDigit(equation.charAt(index)) ){
    24. number = number * 10 + (equation.charAt(index) - '0');
    25. index ++;
    26. numberValid = true;
    27. }
    28. if (sign2 == -1){
    29. number = -number;
    30. }
    31. if (index < n && equation.charAt(index) == 'x'){
    32. if (numberValid){
    33. factor += number;
    34. }else{
    35. factor += sign2;
    36. }
    37. index ++;
    38. }else {
    39. val += number;
    40. }
    41. }
    42. if (factor == 0){
    43. if (val == 0){
    44. return "Infinite solutions";
    45. }else{
    46. return "No solution";
    47. }
    48. }
    49. if (-val%factor != 0) {
    50. return "No solution";
    51. }
    52. return "x="+ (-val/factor);
    53. }
    54. }


    来源:力扣(LeetCode)
    链接:https://leetcode.cn/problems/solve-the-equation


     

  • 相关阅读:
    ThreadLocal源码第二讲(ThreadLocalMap)
    【Linux】字节序理解
    数据采集的基本方法?
    Flutter实践一:package组织
    python集合
    Spring Batch入门学习
    免费领取!TikTok Shop “全托管”黑五大促官方备战指南来啦!
    std::string_view概念原理及应用
    Ubuntu 22.04 安装Nvidia显卡驱动、CUDA、cudnn
    nginx反向代理实例
  • 原文地址:https://blog.csdn.net/asdcls/article/details/126262907