每日演算法 報數

2021-09-21 17:42:26 字數 1142 閱讀 7560

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"

認真觀察可知,每個片段對應的都是幾個

什麼的問題。

那麼我們需要構建的迴圈,需要找到連續的字元都相同的子字串,求出這個字串的長度,加上字元,新增到新的字串中。如此迴圈直到字串結束。

public class demo05 

string str = "1";

for (int i = 0; i < n-1; i++) else

}//此處可能不好理解,結合內層迴圈的if和else可知

//極限情況下如果str的最後乙個字元符合if條件,那麼在進行完if內的邏輯後,其實最後乙個字元是沒有被統計到新的字串中去的,

//這也是為什麼要讓count=1的原因

//else同if,比較容易理解。

str = sb.tostring();

}return str;

}public static void main(string args)

}

演算法 Josephus問題 報數遊戲

問題描述 有n 個人圍成一圈,按順序排號。從第乙個人開始報數 從 1開始 凡報到 5的人退出圈子,問最後留下的是原來第幾號的那位。例如 9個人圍成一圈,1號從第 1開始報數,5號首先退出圈子。接著6號從 1開始重新報數,1號退出圈子。接著2號從 1開始重新報數,7號退出圈子。然後從 8號開始重新報數...

Leetcode報數演算法與分析

leetcode報數 這題是到目前為止,第乙個有點意思的需要腦子的題。說句實話,筆者思考許久,最多寫了4個迴圈,最終還是被自己菜到,卑微地去向大佬們學習借鑑了一下思路,發現本題需要乙個 逆向思維 具體玄妙請看下文分解。廢話少說,上題幹 1 1 2 11 3 21 4 1211 5 111221 1 ...

每日演算法 洗牌演算法

給定乙個n個數的序列,設計乙個演算法將其隨機打亂,保證每個數出現在任意乙個位置的概率相同 也就是說在n 個的排列中,每乙個排列出現的概率相同 假設輸入為陣列num length 隨機選乙個數,放到num 0 中,再隨機選數,如果該數已經選過,重新選,直到該數未選過時放入num 1 中,以此類推,直到...