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.
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[ 0 ] operator = exp[ 1 ] second_operand = exp[ 2 ] 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 Code if __name__ = = '__main__' : # input expression exp = "3x + 12 = 46" print (MissingDigit(exp)) |
4
Time Complexity: O(L), where is the length of the equation.
Auxiliary Space: O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.