[leetcode]Strobogrammatic Number II
python3
先对左边进行backtrace,然后根据奇偶添加右边的。
class Solution:
def findStrobogrammatic(self, n: int) -> List[str]:
if n == 0:
return []
charDict = {'0': '0', '1': '1', '6': '9', '8': '8', '9': '6'}
lst = []
self.backtrace(n // 2, '', lst)
result = []
for item in lst:
reverse = ''
for i in range(len(item)):
reverse += charDict[item[len(item) - i - 1]]
if n % 2 == 0:
result.append(item + reverse)
else:
result.append(item + '0' + reverse)
result.append(item + '1' + reverse)
result.append(item + '8' + reverse)
return result
def backtrace(self, m: int, current: str, lst: List[str]):
if len(current) == m:
lst.append(current)
return
for char in ['0', '1', '6', '8', '9']:
if (current + char)[0] == '0':
continue
self.backtrace(m, current + char, lst)

浙公网安备 33010602011771号