38. 外觀數(shù)列(C++)
給定一個(gè)正整數(shù)?n
?,輸出外觀數(shù)列的第?n
?項(xiàng)。
「外觀數(shù)列」是一個(gè)整數(shù)序列,從數(shù)字 1 開始,序列中的每一項(xiàng)都是對(duì)前一項(xiàng)的描述。
你可以將其視作是由遞歸公式定義的數(shù)字字符串序列:
countAndSay(1) = "1"
countAndSay(n)
?是對(duì)?countAndSay(n-1)
?的描述,然后轉(zhuǎn)換成另一個(gè)數(shù)字字符串。
前五項(xiàng)如下:
1. ? ? 1
2. ? ? 11
3. ? ? 21
4. ? ? 1211
5. ? ? 111221
第一項(xiàng)是數(shù)字 1
描述前一項(xiàng),這個(gè)數(shù)是 1
即 “ 一 個(gè) 1 ”,記作 "11"
描述前一項(xiàng),這個(gè)數(shù)是 11
即 “ 二 個(gè) 1 ” ,記作 "21"
描述前一項(xiàng),這個(gè)數(shù)是 21
即 “ 一 個(gè) 2 + 一 個(gè) 1 ” ,記作 "1211"
描述前一項(xiàng),這個(gè)數(shù)是 1211
即 “ 一 個(gè) 1 + 一 個(gè) 2 + 二 個(gè) 1 ” ,記作 "111221"
要?描述?一個(gè)數(shù)字字符串,首先要將字符串分割為?最小?數(shù)量的組,每個(gè)組都由連續(xù)的最多?相同字符?組成。然后對(duì)于每個(gè)組,先描述字符的數(shù)量,然后描述字符,形成一個(gè)描述組。要將描述轉(zhuǎn)換為數(shù)字字符串,先將每組中的字符數(shù)量用數(shù)字替換,再將所有描述組連接起來。
例如,數(shù)字字符串?"3322251"
?的描述如下圖:

?
示例 1:
輸入:n = 1輸出:"1"解釋:這是一個(gè)基本樣例。
示例 2:
輸入:n = 4輸出:"1211"解釋:countAndSay(1) = "1" countAndSay(2) = 讀 "1" = 一 個(gè) 1 = "11" countAndSay(3) = 讀 "11" = 二 個(gè) 1 = "21" countAndSay(4) = 讀 "21" = 一 個(gè) 2 + 一 個(gè) 1 = "12" + "11" = "1211"
?
提示:
1 <= n <= 30
刷題代碼
本地調(diào)試代碼
容易忽略的地方