在Python中查找Look and Say序列中的第n项

在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"

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程