参考:点击打开链接
列出为0,1的情况,之后的情况皆是在此基础上产生:从中间插入来建立这个临时的字符串
public class Solution {
public List<String> findStrobogrammatic(int n) {
return findStrobogrammaticHelper(n, n);
}
private List<String> findStrobogrammaticHelper(int m, int n) {
if (m == 0) {
String str = "";
List<String> list = new LinkedList<>();
//return list.add(str);
list.add(str);
return list;
} else if (m == 1) {
List<String> list = new LinkedList<>();
list.add("0");
list.add("1");
list.add("8");
return list;
}
List<String> result = new LinkedList<>();
List<String> list = findStrobogrammaticHelper(m - 2, n);
for (String str: list) {
if (m != n) {
result.add("0" + str + "0");
}
result.add("1" + str + "1");
result.add("6" + str + "9");
result.add("8" + str + "8");
result.add("9" + str + "6");
}
return result;
}
}