1 クラス溶液(オブジェクト): 2 デフ__init __(自己): 3 self.count = 0 4 5 DEF DFS(自己、タイル、使用、訪問パス): 6 7 場合 LEN(パス)> 0とパスしないで訪問: 8 visited.add(パス) 9 self.count + = 1 10 11 のための I における範囲(LEN(タイル)): 12 場合に使用する[i]は: 13は、 引き続き 14 = [i]を使用します真 15 self.dfs(タイル、使用、訪問経路+ タイル[I]) 16 使用[i]は= Falseの 17 18 19 DEF numTilePossibilities(自己、タイル): 20 ""」 21 :タイプタイル:STR 22 :RTYPE :INT 23 ""」 24 25 =訪問セット)( 26 使用= [FALSE] * LEN(タイル) 27 (self.dfsタイル、使用を、訪問"" ) 28 リターン self.count
バックトラック、リファレンス:https://leetcode.com/problems/letter-tile-possibilities/discuss/308486/Simple-python-solution-with-backtracking
別の行のスタイル:
1 クラスのソリューション: 2 DEF numTilePossibilities(自己、タイル:STR) - > INT : 3 戻り和(LEN(セット(itertools.permutations(タイル、I)))のための I における範囲(1、LEN(タイル)+ 1) )
参考:https://leetcode.com/problems/letter-tile-possibilities/discuss/308518/Python-1-liner