题目来源
题目描述
- 当n = 0 时:无
- 当 n = 1 时:0, 1, 8
- 当 n = 2 时:它是在n=0的基础上的左右两边添加了[1、1],[6、9]、[8、8]、[9、6]
- 当 n = 3 时:是在n=1的基础上的左右两边添加了[1、1],[6、9]、[8、8]、[9、6]
- 101、111、181
- 609、619、689
- 808、818、888
- 906、916、986
- 当 n = 4 时:
- 1111、1691、1881、1961
- 6119、6699、6889、6969
- 8118、8698、8888、8968
- 9116、9696、9886、9966
- 1001、 6009、 8008、 9006
class Solution {
public:
vector<string> findStrobogrammatic(int n) {
return find(n, n);
}
vector<string> find(int m, int n) {
if (m == 0) return {""};
if (m == 1) return {"0", "1", "8"};
vector<string> t = find(m - 2, n), res;
for (auto a : t) {
if (m != n) res.push_back("0" + a + "0");
res.push_back("1" + a + "1");
res.push_back("6" + a + "9");
res.push_back("8" + a + "8");
res.push_back("9" + a + "6");
}
return res;
}
};