你有一套活字字模 tiles,其中每个字模上都刻有一个字母 tiles[i]。返回你可以印出的非空字母序列的数目。
示例 1:
输入:"AAB"
输出:8
解释:可能的序列为 "A", "B", "AA", "AB", "BA", "AAB", "ABA", "BAA"。
示例 2:
输入:"AAABBC"
输出:188
提示:
1 <= tiles.length <= 7
tiles 由大写英文字母组成
解题思路:
这道题是一道典型的回溯算法,可以用递归解法。
解题代码:
class Solution:
def numTilePossibilities(self, tiles: str) -> int:
from collections import Counter
from copy import copy
counter = dict(Counter(tiles))
ans = []
def _helper(co, s):
if not co:
return
for c in co.keys():
_co = copy(co)
_co[c] -= 1
ans.append(s + c)
if _co[c] == 0:
_co.pop(c)
_helper(_co, s + c)
_helper(counter, '')
return len(ans)
How To Ask Questions The Smart Way - Eric S. Raymond
说明了作者所认为一位发问者事前应该要做好什么,而什么又是不该做的。作者认为这样能让问题容易令人理解,而且发问者自己也能学到较多东西。此文在网络上受到欢迎,被广泛转载而广为人知甚至奉为经典。著名的两个缩写STFW(Search the fxxking web)以及RTFM(Read the fxxking manual)就是出自本文。
✍️一个静态博客写作客户端 (A static blog writing client) https://gridea.dev/
推送通知是如何做到的?手机耗电的技术背景是怎么回事儿?详解推送技术架构之坑
这篇文章简单介绍了消息推送技术的发展历程,最后还提到了为什么我们需要 IPV6
。