Python 中的字母拼块可能性
pythonserver side programmingprogramming更新于 2025/11/13 3:24:17
假设我们有一组拼块,每个拼块上印有一个字母 tiles[i]。求出我们可以制作的非空字母序列的数量。因此,如果输入是"AAB",则输出将为 8。因为序列是"A"、"B"、"AA"、"AB"、"BA"、"AAB"、"ABA"、"BAA"
为了解决这个问题,我们将遵循以下步骤 −
- 定义一个 dfs(),它将取 count
- sum := 0
- 对于 i 在 1 到 26 的范围内
- 如果 count[i] = 0,则进行下一次迭代,而不检查其余部分
- 将 count[i] 减少 1,并将 sum 增加1
- sum := sum + dfs(count)
- 将 count[i] 增加 1
- 返回 sum
- 实际方法将类似于 −
- 创建一个大小为 26 的 count 数组,并用 0 填充
- 对于 tiles 中的每个元素 i
- 将 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

