Solve the equation



Problem to find the x value in given equation. The equation perform the arithmatic operation "+" and "-" only.



Example-1:


Input    : n = "x+5=10"
Output   : 5
Explain  : x + 5 = 10
           x = 10-5
           x = 5  


Example-2:


Input    : n = "10+5=-x+2"
Output   : -13
Explain  : 10+5=-x+2
           10+5-2=-x
           13=-x
           x=-13  


Example-3:


Input    : n = "1+2=-2+4+x"
Output   : 1
Explain  : 1+2=-2+4+x
           3-2=x
           x=1  







Solution




public class Main 
{
      public static void main(String[] args) 
      {
            String s = "10+5=-x+2";

            int value = 0;

            boolean f = false, x_lhs = false;

            for (int i=0;i<s.length();i++)
            {
                if(isNum(s.charAt(i)))
                {
                    int a = 0;

                    if(i != 0 && s.charAt(i-1)=='-')
                    {
                        while(i<s.length() && isNum(s.charAt(i)))
                        {
                            a = (a*10) + Character.getNumericValue(s.charAt(i));

                            i++;
                        }

                        if(f) value = value + a;

                        else
                        {
                            value = value-a;
                        }
                    }

                    else
                    {
                       while(i<s.length()&&isNum(s.charAt(i)))
                       {
                           a = (a*10) + Character.getNumericValue(s.charAt(i));

                           i++;
                       }

                       if(f) value = value-a;

                       else
                       {
                          value = value + a;
                       }

                   }

                   i--;
               }

               if(s.charAt(i)=='=') f = true;

               if(!f&&s.charAt(i)=='x')
               {
                   x_lhs = true;

                   if(i!=0&&s.charAt(i-1)=='-') x_lhs = false;

               }

               if(f&&s.charAt(i)=='x'&&s.charAt(i-1)=='-') x_lhs=true;

            }

            if(x_lhs) System.out.println(-value);

            else
            {
                System.out.println(value);
            }
      }

      public static boolean isNum(char c)
      {
           if(c >= '0' && c<='9') return true;

           return false;
      }
}




Output



5