1220. 统计元音字母序列的数目
2023-09-14 09:01:25 时间
‘’’
思路:
- n=1的时候 所有元音只有一次
- n=2的时候 根据规则 a开头的个数 取决于e的个数
e开头个数 取决于 a和i的个数
i开头……
- n =3的时候 根据规则 a开头的个数还是取决于e的个数
需要注意的是,在n增大的同时,原本的个数是有变化的 比如以a开头的个数是以e为基础的,e的个数又是以n-1的个数为基础的
所以需要存储当前状态下的以aeiou字母为首的字符串的个数
‘’’
class Solution:
def countVowelPermutation(self, n: int) -> int:
'''
思路:
- n=1的时候 所有元音只有一次
- n=2的时候 根据规则 a开头的个数 取决于e的个数
e开头个数 取决于 a和i的个数
i开头……
- n =3的时候 根据规则 a开头的个数还是取决于e的个数
需要注意的是,在n增大的同时,原本的个数是有变化的 比如以a开头的个数是以e为基础的,e的个数又是以n-1的个数为基础的
所以需要存储当前状态下的以aeiou字母为首的字符串的个数
'''
di = {'a': 1, 'e': 1, 'i': 1, 'o': 1, 'u': 1}
tmp = {}
for i in range(n - 1):
tmp['a'] = di['e']
tmp['e'] = di['a'] + di['i']
tmp['i'] = di['e'] + di['o'] + di['a'] + di['u']
tmp['o'] = di['i'] + di['u']
tmp['u'] = di['a']
for key in tmp.keys():
di[key] = tmp.get(key)
tmp.clear() # 清空字典
return sum(di.values()) % (10 ** 9 + 7)