LeetCode 972, Hard. Topics: Math, String. View on LeetCode.
Generate this problem as a practice environment: tested reference solution, 18 parametrized pytest cases, and a playground notebook:
Problem
Given two strings s and t, each of which represents a non-negative rational number, return true if and only if they represent the same number. The strings may use parentheses to denote the repeating part of the rational number.
A rational number can be represented using up to three parts: <IntegerPart>, <NonRepeatingPart>, and a <RepeatingPart>. The number will be represented in one of the following three ways:
<IntegerPart>
- For example,
12, 0, and 123.
<IntegerPart>.<NonRepeatingPart>
- For example,
0.5, 1., 2.12, and 123.0001.
<IntegerPart>.<NonRepeatingPart>(<RepeatingPart>)
- For example,
0.1(6), 1.(9), and 123.00(1212).
The repeating portion of a decimal expansion is conventionally denoted within a pair of round brackets. For example:
1/6 = 0.16666666... = 0.1(6) = 0.1666(6) = 0.166(66).
Examples
Constraints
- Each part consists only of digits.
- The
<IntegerPart> does not have leading zeros (except for the zero itself).
- 1 <=
<IntegerPart>.length <= 4
- 0 <=
<NonRepeatingPart>.length <= 4
- 1 <=
<RepeatingPart>.length <= 4
Solution
Reference implementation from solution.py on GitHub, full suite in test_solution.py:
Complexity
Last modified on September 7, 2026