題目描述:
「外觀數列」是乙個整數序列,從數字 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 即 ...