human
Solve in Python:
Solve a given equation and return the value of x in the form of string "x=#value". The equation contains only '+', '-' operation, the variable x and its coefficient.


If there is no solution for the equation, return "No solution".

If there are infinite solutions for the equation, return "Infinite solutions".

If there is exactly one solution for the equation, we ensure that the value of x is an integer.

Example 1:

Input: "x+5-3+x=6+x-2"
Output: "x=2"


Example 2:

Input: "x=x"
Output: "Infinite solutions"


Example 3:

Input: "2x=x"
Output: "x=0"


Example 4:

Input: "2x+3x-6x=x+2"
Output: "x=-1"


Example 5:

Input: "x=x+2"
Output: "No solution"

Write me a the Python program you requested?
assistant
#Here is the Python program you requested.

class Solution:
     def solveEquation(self, equation):
         """
         :type equation: str
         :rtype: str
         """
         left_x = right_x = 0
         left_const = right_const = 0
         
         cur_left = True
         cur_num = 0
         cur_sign = 1
         has_num = False
         for c in equation:
             if c == "=":
                 left_const += cur_num * cur_sign
                 cur_num = 0
                 cur_sign = 1
                 cur_left = False
                 has_num = False
             elif c in '+-':
                 if cur_left:
                     left_const += cur_num * cur_sign
                 else:
                     right_const += cur_num * cur_sign
                 cur_num = 0
                 cur_sign = 1 if c == '+' else -1
                 has_num = False
             elif c == 'x':
                 if cur_left:
                     left_x += cur_sign* (cur_num if has_num else 1)
                 else:
                     right_x += cur_sign* (cur_num if has_num else 1)
                 cur_num = 0
                 has_num = False
             else:
                 cur_num = cur_num * 10 + int(c)
                 has_num = True
             
             # print(left_x, right_x, left_const, right_const, cur_num, cur_sign)
         
         right_const += cur_num*cur_sign
         left_x -= right_x
         right_const -= left_const
         
         if left_x == 0 and right_const == 0:
             return "Infinite solutions"
         elif left_x == 0 and right_const != 0:
             return "No solution"
         else:
             return "x=" + str(int(right_const/left_x))