LeetCode38 外觀數列

2021-10-04 18:34:01 字數 1580 閱讀 6298

題目描述:

「外觀數列」是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下:1.1

2.11

3.21

4.1211

5.111221

1 被讀作 "one 1"

("乙個一"

), 即 11。

11 被讀作 "two 1s"

("兩個一"), 即 21。

21 被讀作 "one 2"

,"one 1" ("乙個二"

,"乙個一"

), 即 1211。

給定乙個正整數 n(1 ≤ n ≤ 30),輸出外觀數列的第 n 項。

注意:整數序列中的每一項將表示為乙個字串。

示例 1

:輸入:

1輸出:

"1"解釋:這是乙個基本樣例。

示例 2

:輸入:

4輸出:

"1211"

解釋:當 n =

3 時,序列是 "21",其中我們有 "2" 和 "1" 兩組,"2" 可以讀作 "12",也就是出現頻次 =

1 而 值 =

2;類似 "1" 可以讀作 "11"。所以答案是 "12" 和 "11" 組合在一起,也就是 "1211"。

解題思路:

1.每一項都是對前一項,數子的描述,我們首先先把描述的函式寫出來

2.實現描述函式,把每個數字的數值及其出現的個數統計一遍即可。

3.然後實現遞迴,每個結果都是對上一項的描述函式

解題**:

public

class

solution

int j =0;

arr[0]

.num = integer.

valueof

(s2[0]

);arr[0]

.sum =1;

for(

int i =

1; i < s2.length; i++

)else

} string result ="";

for(

int i =

0; i <= j; i++

)return result;

}public

static string countandsay

(int n)

return

number

(countandsay

(n -1)

);}public

static

void

main

(string[

] args)

}

打表法:

1.把每一項的結果都列出來,可以大大加快時間。

解題**:

class

solution

;return arr[n];}

};

leetcode38 外觀數列

外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.111221 1 被讀作 one 1 乙個一 即 11。11 被讀作 two 1s 兩個一 即 21。21 被讀作 one 2 one 1 乙個二 乙個一 即 12...

leetcode 38 外觀數列

38.外觀數列 給定乙個正整數 n 1 n 30 輸出外觀數列的第 n 項。注意 整數序列中的每一項將表示為乙個字串。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1 11 21 1211 111221 第一項是數字 1 描述前一項,這個數是 1 即 乙個...

leetcode38 外觀數列

給定乙個正整數 n 1 n 30 輸出外觀數列的第 n 項。注意 整數序列中的每一項將表示為乙個字串。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.111221 第一項是數字 1 描述前一項,這個數是 1 即 ...