Given an integer n
, return the number of strings of length n
that consist only of vowels (a
, e
, i
, o
, u
) and are lexicographically sorted.
A string s
is lexicographically sorted if for all valid i
, s[i]
is the same as or comes before s[i+1]
in the alphabet.
Example 1:
Input: n = 1
Output: 5
Explanation: The 5 sorted strings that consist of vowels only are ["a","e","i","o","u"].
Example 2:
Input: n = 2 Output: 15 Explanation: The 15 sorted strings that consist of vowels only are ["aa","ae","ai","ao","au","ee","ei","eo","eu","ii","io","iu","oo","ou","uu"]. Note that "ea" is not a valid string since 'e' comes after 'a' in the alphabet.
Example 3:
Input: n = 33 Output: 66045
Constraints:
1 <= n <= 50
Solution:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution(object): | |
def countVowelStrings(self, n): | |
""" | |
:type n: int | |
:rtype: int | |
""" | |
dp ={} | |
def cv(i,vowels): | |
if i in dp and vowels in dp[i]: | |
return dp[i][vowels] | |
if i==1: | |
return vowels | |
if vowels ==1: | |
return 1 | |
if i not in dp: | |
dp[i]=dict() | |
dp[i][vowels]=cv(i-1,vowels)+cv(i,vowels-1) | |
return dp[i][vowels] | |
return cv(n,5) |
No comments:
Post a Comment