|
44 | 44 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
45 | 45 |
|
46 | 46 | ```python
|
47 |
| - |
| 47 | +class Solution: |
| 48 | + def findStrobogrammatic(self, n: int) -> List[str]: |
| 49 | + def dfs(u): |
| 50 | + if u == 0: |
| 51 | + return [''] |
| 52 | + if u == 1: |
| 53 | + return ['0', '1', '8'] |
| 54 | + ans = [] |
| 55 | + for v in dfs(u - 2): |
| 56 | + for l, r in [['1', '1'], ['8', '8'], ['6', '9'], ['9', '6']]: |
| 57 | + ans.append(l + v + r) |
| 58 | + if u != n: |
| 59 | + ans.append('0' + v + '0') |
| 60 | + return ans |
| 61 | + |
| 62 | + return dfs(n) |
48 | 63 | ```
|
49 | 64 |
|
50 | 65 | ### **Java**
|
51 | 66 |
|
52 | 67 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
53 | 68 |
|
54 | 69 | ```java
|
| 70 | +class Solution { |
| 71 | + private int n; |
| 72 | + |
| 73 | + public List<String> findStrobogrammatic(int n) { |
| 74 | + this.n = n; |
| 75 | + return dfs(n); |
| 76 | + } |
| 77 | + |
| 78 | + private List<String> dfs(int u) { |
| 79 | + if (u == 0) { |
| 80 | + return Collections.singletonList(""); |
| 81 | + } |
| 82 | + if (u == 1) { |
| 83 | + return Arrays.asList("0", "1", "8"); |
| 84 | + } |
| 85 | + List<String> ans = new ArrayList<>(); |
| 86 | + int[][] pairs = new int[][]{{1, 1}, {8, 8}, {6, 9}, {9, 6}}; |
| 87 | + for (String v : dfs(u - 2)) { |
| 88 | + for (int[] p : pairs) { |
| 89 | + ans.add(p[0] + v + p[1]); |
| 90 | + } |
| 91 | + if (u != n) { |
| 92 | + ans.add("0" + v + "0"); |
| 93 | + } |
| 94 | + } |
| 95 | + return ans; |
| 96 | + } |
| 97 | +} |
| 98 | +``` |
| 99 | + |
| 100 | +### **C++** |
| 101 | + |
| 102 | +```cpp |
| 103 | +class Solution { |
| 104 | +public: |
| 105 | + int n; |
| 106 | + vector<string> findStrobogrammatic(int n) { |
| 107 | + this->n = n; |
| 108 | + return dfs(n); |
| 109 | + } |
| 110 | + |
| 111 | + vector<string> dfs(int u) { |
| 112 | + if (u == 0) return {""}; |
| 113 | + if (u == 1) return {"0", "1", "8"}; |
| 114 | + vector<string> ans; |
| 115 | + vector<vector<char>> pairs = {{'1', '1'}, {'8', '8'}, {'6', '9'}, {'9', '6'}}; |
| 116 | + for (string v : dfs(u - 2)) |
| 117 | + { |
| 118 | + for (auto& p : pairs) ans.push_back({p[0] + v + p[1]}); |
| 119 | + if (u != n) ans.push_back('0' + v + '0'); |
| 120 | + } |
| 121 | + return ans; |
| 122 | + } |
| 123 | +}; |
| 124 | +``` |
55 | 125 |
|
| 126 | +### **Go** |
| 127 | + |
| 128 | +```go |
| 129 | +func findStrobogrammatic(n int) []string { |
| 130 | + var dfs func(int) []string |
| 131 | + dfs = func(u int) []string { |
| 132 | + if u == 0 { |
| 133 | + return []string{""} |
| 134 | + } |
| 135 | + if u == 1 { |
| 136 | + return []string{"0", "1", "8"} |
| 137 | + } |
| 138 | + var ans []string |
| 139 | + pairs := [][]string{{"1", "1"}, {"8", "8"}, {"6", "9"}, {"9", "6"}} |
| 140 | + for _, v := range dfs(u - 2) { |
| 141 | + for _, p := range pairs { |
| 142 | + ans = append(ans, p[0]+v+p[1]) |
| 143 | + } |
| 144 | + if u != n { |
| 145 | + ans = append(ans, "0"+v+"0") |
| 146 | + } |
| 147 | + } |
| 148 | + return ans |
| 149 | + } |
| 150 | + return dfs(n) |
| 151 | +} |
56 | 152 | ```
|
57 | 153 |
|
58 | 154 | ### **...**
|
|
0 commit comments