zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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)