力扣38 外觀數列(字串,有點魔幻)

2021-10-05 02:06:33 字數 1257 閱讀 9454

力扣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。給定乙個...