Strobogrammatic Number 2 - Generate for length n
MediumUpdated: Aug 2, 2025
Problem
A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Find all strobogrammatic numbers that are of length = n.
Examples
Example 1:
Input: n = 2
Output: ["11","69","88","96"]
Similar Problems
[Strobogrammatic Number 1 - Check if strobogrammatic](strobogrammatic-number-1-check-if-strobogrammatic)
Solution
Method 1 - DFS
We can use following approach:
- Use recursion to generate strobogrammatic numbers by placing strobogrammatic pairs at the start and end of the number.
- Handle the base cases where
nis 0 or 1.n == 0⇨ empty stringn == 1⇨[0,1,8]
- Construct numbers of length
nby placing valid strobogrammatic pairs and recursively constructing the inner part of the number.
f(n) = [
("0" + f(n-2) + "0"),
("1" + f(n-2) + "1"),
("6" + f(n-2) + "9"),
("8" + f(n-2) + "8"),
("9" + f(n-2) + "6"),
]
Code
Java
public class Solution {
public List<String> findStrobogrammatic(int n) {
return helper(n, n);
}
private List<String> helper(int n, int m) {
if (n == 0) return {
new ArrayList<>(List.of(""));
}
if (n == 1) return {
new ArrayList<>(List.of("0", "1", "8"));
}
List<String> list = helper(n - 2, m);
List<String> ans = new ArrayList<>();
for (String s: list) {
if (n != m) { // as we cannot start with 0
ans.add("0" + s + "0");
}
ans.add("1" + s + "1");
ans.add("6" + s + "9");
ans.add("8" + s + "8");
ans.add("9" + s + "6");
}
return result;
}
}
Complexity
- ⏰ Time complexity:
O(5^(n/2)), each time we generate 5 pairs - 🧺 Space complexity:
O(n), for using recursion stack