leetcode38. 外观数列
生活随笔
收集整理的這篇文章主要介紹了
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"?("一個二"?,??"一個一")?, 即?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"。
?思路:難點可能在理解題意吧,理解之后模擬出來即可。具體見代碼。
class Solution {/*** 難點:報數的概念理解* 從4->5分析,將4個每一位拆開看(個數+數字),4=1211 => 1=11,2=12,11=21,所以5=111221* 模擬出來過程即可*/public String countAndSay(int n) {String str = "1";for (int i = 2; i <= n; i++) {StringBuilder builder = new StringBuilder();char pre = str.charAt(0);int count = 1;for (int j = 1; j < str.length(); j++) {char c = str.charAt(j);if (c == pre) {count++;} else {builder.append(count).append(pre);pre = c;count = 1;}}builder.append(count).append(pre);str = builder.toString();}return str;} }?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的leetcode38. 外观数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尚硅谷李老师笔记3DQL
- 下一篇: leetcode39. 组合总和