在Python中查找Look and Say序列中的第n项
假设我们有一个数字n,我们必须生成“Look and Say”序列中的第n项。 这是一个序列,其前几项如下所示 –
- 1
- 11
- 21
- 1211
- 111221
该字符串将被读取为
- 1(一个)
- 11(一个1)因此读取前一个1,并说“一个1”
- 21(两个1)因此读取前一个11,并说“两个1”
- 1211(一个2一个1)因此读取前一个21,并说“一个2一个1”
- 111221(一个1一个2两个1)因此读取前一个1211,并说“一个1一个2两个1”
假设我们有一个数字n,1 <= n <= 30,那么我们必须生成第n个项。 要解决这个问题,我们将采用以下方法 –
- 设置s:=“1”
- 如果n = 1,则返回s
- for i:= 2到n + 1
- j:= 0
- temp:=空字符串
- curr =空字符串和count:= 0
- while j < s的长度时,执行
- 如果curr是空字符串,则
- curr:= s [j],count:= 1并增加j 1
- else if curr是s [j],则
- 增加计数并将j增加1
- 否则:
- temp:= temp + count作为字符串 + curr
- curr =空字符串
- count:= 0
- temp:= temp + count作为字符串 + curr
- 返回s
让我们看以下实现以更好的理解 –
更多Python相关文章,请阅读:Python 教程
范例
class Solution(object):
def solve(self, n):
s = "1"
if n == 1:
return s
for i in range(2,n+1):
j = 0
temp = ""
curr = ""
count = 0
while j < len(s):
if curr =="":
curr=s[j]
count=1
j+=1
elif curr == s[j]:
count+=1
j+=1
else:
temp+= str(count) + curr
curr=""
count = 0
temp+=str(count) + curr
s=temp
return s
ob = Solution()
n = 5
print(ob.solve(n))
输入
5
输出
"111221"