Leetcode 38.外观数列 (每日一题 20210702)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode 38.外观数列 (每日一题 20210702)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定一個(gè)正整數(shù) n ,輸出外觀數(shù)列的第 n 項(xiàng)。「外觀數(shù)列」是一個(gè)整數(shù)序列,從數(shù)字 1 開(kāi)始,序列中的每一項(xiàng)都是對(duì)前一項(xiàng)的描述。你可以將其視作是由遞歸公式定義的數(shù)字字符串序列:countAndSay(1) = "1"
countAndSay(n) 是對(duì) countAndSay(n-1) 的描述,然后轉(zhuǎn)換成另一個(gè)數(shù)字字符串。
前五項(xiàng)如下:1. 1
2. 11
3. 21
4. 1211
5. 111221
第一項(xiàng)是數(shù)字 1
描述前一項(xiàng),這個(gè)數(shù)是 1 即 “ 一 個(gè) 1 ”,記作 "11"
描述前一項(xiàng),這個(gè)數(shù)是 11 即 “ 二 個(gè) 1 ” ,記作 "21"
描述前一項(xiàng),這個(gè)數(shù)是 21 即 “ 一 個(gè) 2 + 一 個(gè) 1 ” ,記作 "1211"
描述前一項(xiàng),這個(gè)數(shù)是 1211 即 “ 一 個(gè) 1 + 一 個(gè) 2 + 二 個(gè) 1 ” ,記作 "111221"
要 描述 一個(gè)數(shù)字字符串,首先要將字符串分割為 最小 數(shù)量的組,每個(gè)組都由連續(xù)的最多 相同字符 組成。然后對(duì)于每個(gè)組,先描述字符的數(shù)量,然后描述字符,形成一個(gè)描述組。要將描述轉(zhuǎn)換為數(shù)字字符串,先將每組中的字符數(shù)量用數(shù)字替換,再將所有描述組連接起來(lái)。例如,數(shù)字字符串 "3322251" 的描述如下圖:示例 1:輸入:n = 1
輸出:"1"
解釋:這是一個(gè)基本樣例。
示例 2:輸入:n = 4
輸出:"1211"
解釋:
countAndSay(1) = "1"
countAndSay(2) = 讀 "1" = 一 個(gè) 1 = "11"
countAndSay(3) = 讀 "11" = 二 個(gè) 1 = "21"
countAndSay(4) = 讀 "21" = 一 個(gè) 2 + 一 個(gè) 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
總結(jié)
以上是生活随笔為你收集整理的Leetcode 38.外观数列 (每日一题 20210702)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Leetcode 62.不同路径 (每日
- 下一篇: Leetcode 58.最后一个单词的长