力扣38. 外觀數列
「外觀數列」是乙個整數序列,從數字 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。
第二行讀第一行,1 個 1,去掉個字,所以第二行就是 11。
第三行讀第二行,2 個 1,去掉個字,所以第三行就是 21。
第四行讀第三行,1 個 2,1 個 1,去掉所有個字,所以第四行就是 1211。
第五行讀第四行,1 個 1,1 個 2,2 個 1,去掉所有個字,所以第五航就是 111221。
第六行讀第五行,3 個 1,2 個 2,1 個 1,去掉所以個字,所以第六行就是 312211。
然後題目要求輸入 1 - 30 的任意行數,輸出該行是什麼
#include "stdafx.h"
#includeusing namespace std;
class solution
return result;
} string iter(string s)
} //因為s[i] == s[i + 1],所以上面的迴圈只能去到第i-1個
res += num + '0';//此處要加上最後乙個子串行的描述
res += s[s.size() - 1];//num個s[i]
return res;
}};int main()
力扣38外觀數列 js
給定乙個正整數 n 輸出外觀數列的第 n 項。外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。你可以將其視作是由遞迴公式定義的數字字串序列 countandsay 1 1 countandsay n 是對 countandsay n 1 的描述,然後轉換成另乙個數字字串...
443 壓縮字串 38 外觀數列
給定一組字元,使用原地演算法將其壓縮。壓縮後的長度必須始終小於或等於原陣列長度。陣列的每個元素應該是長度為1 的字元 不是 int 整數型別 在完成原地修改輸入陣列後,返回陣列的新長度。高階 你能否僅使用o 1 空間解決問題?示例 1 輸入 a a b b c c c 輸出 返回 6 輸入陣列的前 ...
leetcode 字串 外觀數列
外觀數列 是乙個整數序列,從數字 1 開始,序列中的每一項都是對前一項的描述。前五項如下 1.1 2.11 3.21 4.1211 5.1112211被讀作 one 1 乙個一 即11。11被讀作 two 1s 兩個一 即21。21被讀作 one 2 one 1 乙個二 乙個一 即1211。給定乙個...