$O(n)$
可以理解成每一次循环都是在之前已经存在的字符串前面添加新的字符,因为要保证字典序,所以a可以添加到上一轮的所有答案的前面形成新的答案, e 只能添加在除了a开头的所有答案上,依次类推即可
C++ 代码
class Solution {
public:
int countVowelStrings(int n) {
int a = 1, b = 1, c = 1, d = 1, e = 1;
while(--n)
{
int a1 = a, b1 = b, c1 = c, d1 = d, e1 = e;
a = (a1 + b1 + c1 + d1 + e1);
b = (b1 + c1 + d1 + e1);
c = (c1 + d1 + e1);
d = (d1 + e1);
e = e1;
}
return a + b + c + d +e;
}
};