1641. 統計字典序母音字串的數目
難度中等40
給你乙個整數 `n`,請返回長度為 `n` 、僅由母音 (`a`, `e`, `i`, `o`, `u`) 組成且按 **字典序排列** 的字串數量。
字串 `s` 按 **字典序排列** 需要滿足:對於所有有效的 `i`,`s[i]` 在字母表中的位置總是與 `s[i+1]` 相同或在 `s[i+1]` 之前。
**示例 1:**
```輸入:n = 1
輸出:5
解釋:僅由母音組成的 5 個字典序字串為 ["a","e","i","o","u"]
```**示例 2:**
```
輸入:n = 2
輸出:15
解釋:僅由母音組成的 15 個字典序字串為
[「aa」,「ae」,「ai」,「ao」,「au」,「ee」,「ei」,「eo」,「eu」,「ii」,「io」,「iu」,「oo」,「ou」,「uu」]
注意,「ea」 不是符合題意的字串,因為 『e』 在字母表中的位置比 『a』 靠後
```
**示例 3:**
```
這道題屬於數學題,可惜我數學不好,所以儘管我覺得自己會,我還是沒做出來
這個問題的數學解法,可以把問題轉換成將 n 個小球放到 5 個盒子裡,盒子可以為空。我們可以想象成把 n 個字元分配給五個母音所代表的盒子中。一旦每個盒子中的字元個數定了,那麼這個字串也固定下來了。因為題目要求必須是字典序,所以一定 a 字元在最前;其次是 e 字元;其次是 i 字元;其次是 o 字元;其次是 u 字元。
下面問題的關鍵就是,n 個小球放到 5 個盒子裡,盒子可以為空,一共有多少種方法?
這是經典的中學數學問題。更一般的,我們來**,將 n 個小球放到 m 個盒子裡,有多少種方法?
首先,我們考慮問題的簡單版本,即盒子不能為空的情況。
此時,我們只需要在 n 個小球排成一排,中間放 m - 1 個隔板,放好以後,相當於把 n 個小球分成了 m 份。每乙份對應乙個盒子裡的小球數量。
因為盒子不能為空,所以兩個小球之間不可能放多個隔板,左右兩端也不可能放隔板。因此,放隔板的位置有 n - 1 個,我們要放 m - 1 個隔板。答案為 c(n - 1, m - 1)。
有了這個結論,再來討論問題的複雜版本,就簡單了,即盒子可以為空的情況。
此時,我們只需要先拿 m 個新的小球,在 m 個盒子裡,每個盒子中扔進去乙個小球。之後,再分配原來的這 n 個小球,得到的分配結果,肯定 m 個盒子裡都不為空。但此時,我們使用了 n + m 個小球。
換句話說,把 n 個小球放到 m 個盒子裡,盒子可以為空,等價於:把 n + m 個小球放到 m 個盒子裡,盒子不能為空。
大家也可以想成是:我們先把 n + m 個小球放到 m 個盒子裡,盒子不能為空,然後再在每個盒子裡拿走 1 個小球,總共拿走了 m 個小球,得到的結果,就是把 n 個小球放到 m 個盒子裡,盒子可以為空的解。
把 n + m 個小球放到 m 個盒子裡,盒子不能為空的分法,帶入上面的公式,就是 c(n + m - 1, m - 1)
所以,把 n 個小球放到 m 個盒子裡,盒子可以為空,答案為 c(n + m - 1, m - 1)。
總結:將 n 個小球放到 m 個盒子裡,盒子不為空:c(n - 1, m - 1);
將 n 個小球放到 m 個盒子裡,盒子可以空:c(n + m - 1, m - 1);
對於這個問題,m = 5,盒子可以為空,所以答案是 c(n + 5 - 1, 5 - 1) = c(n + 4, 4)
class solution
};
1641 統計字典序母音字串的數目
題目描述 給你乙個整數 n,請返回長度為 n 僅由母音 a,e,i,o,u 組成且按 字典序排列 的字串數量。字串 s 按 字典序排列 需要滿足 對於所有有效的 i,s i 在字母表中的位置總是與 s i 1 相同或在 s i 1 之前。解題思路 用dp i j 表示以i結尾的長度為j的字串,他的解...
字串 統計母音
description統計每個母音字母在字串 現的次數。input輸入資料首先包括乙個整數n,表示測試例項的個數,然後是n行長度不超過100的字串。output對於每個測試例項輸出5行,格式如下 a num1 e num2 i num3 o num4 u num5 多個測試例項之間由乙個空行隔開。請...
字串之統計母音
description 統計每個母音字母在字串中出現的次數。input 輸入資料首先包括乙個整數 n,表示測試例項的個數,然後是 n行長度不超過 100的字串。output 對於每個測試例項輸出 5行,格式如下 a num1 e num2 i num3 o num4 u num5 多個測試例項之間由...