Python中的字母平铺可能性
假设我们有一组图块,每个图块上都印有一个字母图块[i]。查找我们可以制作的可能的非空字母序列的数量。因此,如果输入为“AAB”,则输出为8。由于序列为“A”,“B”,“AA”,“AB”,“BA”,“AAB”,“ABA”,“BAA”
为了解决这个问题,我们将遵循以下步骤-
定义一个dfs(),将计数
和:=0
对于我在1到26之间的范围
如果count[i]=0,则进行下一次迭代,而不检查其余部分
将count[i]减少1,并将总和增加1
sum:=sum+dfs(count)
将count[i]增加1
返还金额
实际的方法将是-
制作一个大小为26的计数数组,并用0填充
对于图块中的每个元素
将count[i–'A'+1]增加1
返回dfs(count)
让我们看下面的实现以更好地理解-
示例
class Solution(object):
def numTilePossibilities(self, tiles):
count = [0 for i in range(27)]
for i in tiles:
count[ord(i)-ord('A')+1]+=1
return self.dfs(count)
def dfs(self,count):
summ = 0
for i in range(1,27):
if count[i]==0:
continue
count[i]-=1
summ+=1
summ+=self.dfs(count)
count[i]+=1
return summ
ob = Solution()print(ob.numTilePossibilities("AAB"))输入值
"AAB"
输出结果
8
热门推荐
6 医政科祝福语简短
10 工厂祝福语简短的句子
11 聚餐会祝福语简短
12 比赛结束花束祝福语简短
13 给婴儿祝福语简短的话
14 老师送的祝福语简短
15 表达朋友的祝福语简短
16 新年祝福语和语句简短
17 三十三句祝福语简短
18 订婚祝福语简短好听女