给你一个整数 n
,请返回长度为 n
、仅由元音 (a
, e
, i
, o
, u
) 组成且按 字典序排列 的字符串数量。
字符串 s
按 字典序排列 需要满足:对于所有有效的 i
,s[i]
在字母表中的位置总是与 s[i+1]
相同或在 s[i+1]
之前。
输入: n = 1 输出: 5 解释: 仅由元音组成的 5 个字典序字符串为 ["a","e","i","o","u"]
输入: n = 2 输出: 15 解释: 仅由元音组成的 15 个字典序字符串为 ["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"] 注意,"ea" 不是符合题意的字符串,因为 'e' 在字母表中的位置比 'a' 靠后
输入: n = 33 输出: 66045
1 <= n <= 50
# @param {Integer} n
# @return {Integer}
def count_vowel_strings(n)
dp = [1] * 5
(1...n).each do |_|
dp[1] += dp[0]
dp[2] += dp[1]
dp[3] += dp[2]
dp[4] += dp[3]
end
dp.sum
end
impl Solution {
pub fn count_vowel_strings(n: i32) -> i32 {
let mut dp = [1; 5];
for _ in 1..n {
dp[1] += dp[0];
dp[2] += dp[1];
dp[3] += dp[2];
dp[4] += dp[3];
}
dp.iter().sum()
}
}