38. 報數(python)
題目描述(簡單)
報數序列是一個整數序列,按照其中的整數的順序進行報數,得到下一個數。其前五項如下:
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"
思路分析
屬於考察字串的題目,好像沒有什麼很巧妙的解法。大多數都是用的暴力遍歷的解法。
用List表示報數的集合,i 表示從1 到 n 的報數。單獨寫了一個求下一個報數結果的方法:nextseq,用res表示要返回的報數。
遍歷List[i-1]每一個字元,如果當前字元與下一個字元相等,count+1; 不等的話,res新增當前字元。要注意遍歷到最後一個字元的情況特殊處理。
程式碼
本次提交在python3中擊敗73.07%使用者
class Solution:
def nextseq(self, seq):
if len(seq) == 1:
return '1' + seq
res = ''
count = 1
for i in range(len(seq) - 1):
if seq[i] == seq[i + 1]:
count += 1
else:
res = res + str(count) + seq[i]
count = 1
if i ==len(seq)-2:#判斷是否到達最後一個
res = res + str(count) + seq[i+1]
return res
def countAndSay(self, n):
"""
:type n: int
:rtype: str
"""
List = []
List.append('1')
for i in range(1, n):
cur = self.nextseq(List[i - 1])
List.append(cur)
return List[n - 1]
相關文章
- 劍指 Offer 38. 字串的排列字串
- Bootstrap系列 -- 38. 基礎導航條boot
- 解密Prompt系列38.多Agent路由策略解密路由
- Java輕鬆搞定leetcode前100系列之38. 外觀數列JavaLeetCode
- 報數遊戲遊戲
- python報錯Python
- Python筆記-CSP 201912-1 報數Python筆記
- python_excel_openpyxl成功操作單元格位置變化並報數PythonExcel
- python的報錯Python
- python整數和變數Python變數
- python變數和引數Python變數
- Python - 變數Python變數
- python引數Python
- Python 數字Python
- python——變數Python變數
- Python變數Python變數
- 【python 監控報警】python自動發微信監控報警Python
- Python報UnicodeDecodeErrorPythonUnicodeError
- python分析文字報告Python
- Python報錯總結Python
- python-pycharm報錯PythonPyCharm
- 【Python】升級python後pip報錯Python
- python parameter引數Python
- Python多值引數Python
- Python Number(數字)Python
- (2)python引數Python
- Python私有變數Python變數
- Python 數字操作Python
- Python數學運算Python
- python變數與變數作用域Python變數
- python---函式引數、變數Python函式變數
- python3 print報錯Python
- 使用 Python 解析引數Python
- python初識引數Python
- Python數值型別Python型別
- Python學習-變數Python變數
- 數字轉中文 pythonPython
- Python基礎:變數Python變數