1. 程式人生 > 實用技巧 >247. Strobogrammatic Number II 倒過來看也一樣的數

247. Strobogrammatic Number II 倒過來看也一樣的數

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.

Example:

Input:  n = 2
Output: ["11","69","88","96"]

思路:不知道和回溯有啥關係?感覺是去要去加。
cur = ans;
然後根據cur,給ans里加東西
這是用iterative的方法去加,還蠻特殊的

for (;n > 1; n -= 2) {
            cur 
= ans; ans = new ArrayList<String>(); for (String i : cur) { if (n > 3) ans.add('0' + i + '0');

如果長度 > 3, 就可以有'010'這種被0夾的數字

class Solution {
    public List<String> findStrobogrammatic(int n) {
        List<String> cur, ans;
        ans 
= new ArrayList<String>((n & 1) == 0 ? Arrays.asList("") : Arrays.asList("0", "1", "8")); if (n < 2) return ans; for (; n > 1; n -= 2) { cur = ans; ans = new ArrayList<String>(); for (String currentString : cur) {
if (n > 3) ans.add('0' + currentString + '0'); ans.add('1' + currentString + '1'); ans.add('6' + currentString + '9'); ans.add('9' + currentString + '6'); ans.add('8' + currentString + '8'); } } return ans; } }
View Code