https://leetcode-cn.com/problems/count-and-say/
def countAndSay(n):
"""
报数
1. 1
2. 11(表明1.有一个1)
3. 21(表明2.有两个1)
4. 1211(表明3.有一个2一个1)
5. 111221(表明4.有一个1一个2两个1)
"""
res = "1"
if n <= 1:
return res
for i in range(1, n):
ans = ""
tuple_list = []
for r in res:
if tuple_list:
if tuple_list[-1][0] == r:
tuple_list[-1][1] += 1
else:
tuple_list.append([r, 1])
else:
tuple_list.append([r, 1])
for t in tuple_list:
ans += str(t[1]) + t[0]
res = ans
return res
def countAndSay(n):
"""
报数
1. 1
2. 11(表明1.有一个1)
3. 21(表明2.有两个1)
4. 1211(表明3.有一个2一个1)
5. 111221(表明4.有一个1一个2两个1)
"""
import re
s = '1'
for _ in range(n - 1):
s = re.sub(r'(.)\1*', lambda m: str(len(m.group(0))) + m.group(1), s)
return s