Leetcode 38.外观数列 (每日一题 20210702)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 38.外观数列 (每日一题 20210702)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
給定一個正整數(shù) n ,輸出外觀數(shù)列的第 n 項。「外觀數(shù)列」是一個整數(shù)序列,從數(shù)字 1 開始,序列中的每一項都是對前一項的描述。你可以將其視作是由遞歸公式定義的數(shù)字字符串序列:countAndSay(1) = "1"
countAndSay(n) 是對 countAndSay(n-1) 的描述,然后轉換成另一個數(shù)字字符串。
前五項如下:1. 1
2. 11
3. 21
4. 1211
5. 111221
第一項是數(shù)字 1
描述前一項,這個數(shù)是 1 即 “ 一 個 1 ”,記作 "11"
描述前一項,這個數(shù)是 11 即 “ 二 個 1 ” ,記作 "21"
描述前一項,這個數(shù)是 21 即 “ 一 個 2 + 一 個 1 ” ,記作 "1211"
描述前一項,這個數(shù)是 1211 即 “ 一 個 1 + 一 個 2 + 二 個 1 ” ,記作 "111221"
要 描述 一個數(shù)字字符串,首先要將字符串分割為 最小 數(shù)量的組,每個組都由連續(xù)的最多 相同字符 組成。然后對于每個組,先描述字符的數(shù)量,然后描述字符,形成一個描述組。要將描述轉換為數(shù)字字符串,先將每組中的字符數(shù)量用數(shù)字替換,再將所有描述組連接起來。例如,數(shù)字字符串 "3322251" 的描述如下圖:示例 1:輸入:n = 1
輸出:"1"
解釋:這是一個基本樣例。
示例 2:輸入:n = 4
輸出:"1211"
解釋:
countAndSay(1) = "1"
countAndSay(2) = 讀 "1" = 一 個 1 = "11"
countAndSay(3) = 讀 "11" = 二 個 1 = "21"
countAndSay(4) = 讀 "21" = 一 個 2 + 一 個 1 = "12" + "11" = "1211"鏈接:https://leetcode-cn.com/problems/count-and-sayclass Solution:def countAndSay(self, n: int) -> str:pre, cur = "", "1"for _ in range(1,n):pre = curcur = ''start ,end = 0, 0while end < len(pre):while end < len(pre) and pre[start] == pre[end]:end += 1cur += str(end - start) + pre[start]start = endreturn cur
總結
以上是生活随笔為你收集整理的Leetcode 38.外观数列 (每日一题 20210702)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode 62.不同路径 (每日
- 下一篇: Leetcode 58.最后一个单词的长