248. Strobogrammatic Number III π
Description
Given two strings low and high that represent two integers low
and high
where low <= high
, return the number of strobogrammatic numbers in the range [low, high]
.
A strobogrammatic number is a number that looks the same when rotated 180
degrees (looked at upside down).
Example 1:
Input: low = "50", high = "100" Output: 3
Example 2:
Input: low = "0", high = "0" Output: 1
Constraints:
1 <= low.length, high.length <= 15
low
andhigh
consist of only digits.low <= high
low
andhigh
do not contain any leading zeros except for zero itself.
Solutions
Solution 1: Recursion
If the length is $1$, then the strobogrammatic numbers are only $0, 1, 8$; if the length is $2$, then the strobogrammatic numbers are only $11, 69, 88, 96$.
We design a recursive function $dfs(u)$, which returns the strobogrammatic numbers of length $u$.
If $u$ is $0$, return a list containing an empty string, i.e., [""]
; if $u$ is $1$, return the list ["0", "1", "8"]
.
If $u$ is greater than $1$, we traverse all the strobogrammatic numbers of length $u - 2$. For each strobogrammatic number $v$, we add $1, 8, 6, 9$ to both sides of it, and we can get the strobogrammatic numbers of length $u$.
Note that if $u \neq n$, we can also add $0$ to both sides of the strobogrammatic number.
Let the lengths of $low$ and $high$ be $a$ and $b$ respectively.
Next, we traverse all lengths in the range $[a,..b]$. For each length $n$, we get all strobogrammatic numbers $dfs(n)$, and then check whether they are in the range $[low, high]$. If they are, we increment the answer.
The time complexity is $O(2^{n+2} \times \log n)$.
Similar problems:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|