Find the missing digit x from the given expression

• Difficulty Level : Easy
• Last Updated : 17 Sep, 2020

Given an alphanumeric string, consisting of a single alphabet X, which represents an expression of the form:

A operator B = C
where A, B and C denotes integers and the operator can be either of +, -, * or /

The task is to evaluate the missing digit X present in any of the integers A, B and C such that the given expression holds to be valid.

Examples:

Input: S = “3x + 12 = 46”
Output: 4
Explanation:
If we subtract 12 from 46, we will get 34.
So, on comparing 3x and 34. the value of x = 4

Input: S = “4 – 2 = x”
Output: 2
Explanation:
After solving the equation, the value of x = 2.

Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Follow the steps below to solve the problem:

• Split the string to extract the two operands, operator and the resultant.
• Check if X is present in the resultant or not. If so, then compute the value of the resultant by applying operations on the first operand and second operand with the operator.
• Otherwise, if X is not present in the resultant. Then check if X is present in the first operand. If so, then apply the operation on the second operand and resultant with the operator.
• Otherwise, if X is not present in the first operand also. Then check if X is present in the second operand. If so, then apply the operation on the first operand and resultant with the operator.

Below is the implementation of the above approach:

Python3

 # Python3 program to find missing# digit x in expression    def MissingDigit(exp):        # Split the expression to    # extract operands, operator    # and resultant    exp = list(exp.split())      first_operand = exp    operator = exp    second_operand = exp    resultant = exp[-1]      # If x is present in resultant    if 'x' in resultant:        x = resultant        first_operand = int(first_operand)        second_operand = int(second_operand)          if operator == '+':            res = first_operand + second_operand        elif operator == '-':            res = first_operand - second_operand        elif operator == '*':            res = first_operand * second_operand        else:            res = first_operand // second_operand       # If x in present in operands    else:          resultant = int(resultant)          # If x in the first operand        if 'x' in first_operand:              x = first_operand            second_operand = int(second_operand)              if operator == '+':                res = resultant - second_operand            elif operator == '-':                res = resultant + second_operand            elif operator == '*':                res = resultant // second_operand            else:                res = resultant * second_operand          # If x is in the second operand        else:              x = second_operand            first_operand = int(first_operand)              if operator == '+':                res = resultant-first_operand            elif operator == '-':                res = first_operand - resultant            elif operator == '*':                res = resultant // first_operand            else:                res = first_operand // resultant      res = str(res)    k = 0    for i in x:        if i == 'x':            result = res[k]            break        else:            k = k + 1      return result    # Driver Codeif __name__ == '__main__':    # input expression    exp = "3x + 12 = 46"      print(MissingDigit(exp))
Output:
4

Time Complexity: O(L), where is the length of the equation.
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up