Python 中的计数和说

pythonserver side programmingprogramming更新于 2025/10/31 18:20:17

这里我们将看到计数和说序列。这是一个序列,其几个项如下所示 −

  • 1
  • 11
  • 21
  • 1211
  • 111221

字符串将被读取为

  • 1 (One)
  • 11 (One 1) 因此读取前一个 1,并说"One 1"
  • 21 (Two 1) 因此读取前一个 11,并说"Two 1"
  • 1211 (One 2 one 1) 因此读取前一个 21,并说"One 2 one 1"
  • 111221 (One 1 one 2 two 1) 因此读取前一个1211,并说"一 1 一 2 二 1"

假设我们有一个数字 n,1 <= n < = 30,那么我们必须生成第 n 项。

为了解决这个问题,我们将遵循这种方法 −

  • 设置 s := “1”
  • 如果 n = 1,则返回 s
  • 对于 i := 2 到 n + 1
    • j := 0,temp := “”,curr = “” 和 count := 0
    • 当 j < s 的长度,执行
      • 如果 curr 是 “”,则 curr := s[j],count := 1 并将 j 增加 1
      • 否则,如果 curr 是 s[j],则将 count 和 j 增加 1
      • 否则 temp := temp + count as string + curr,curr = “”,count := 0
    • temp := temp + count as string + curr
  • 返回 s

让我们看看下面的实现以便更好地理解 −

示例

class Solution(object):
   def countAndSay(self, n):
      """
      :type n: int
      :rtype: str
      """
      s = "1"
      if n == 1:
         return s
      for i in range(2,n+1):
         j = 0
         temp = ""
         curr = ""
         count = 0
         while j<len(s):
            #print(curr,count)
            if curr =="":
               #print(curr)
               curr=s[j]
               count=1
               j+=1
            elif curr == s[j]:
               #print(curr)
               count+=1
               j+=1
            else:
               #print(count,curr)
               temp+= str(count) + curr
               curr=""
               count = 0
               #print(temp)
         temp+=str(count) + curr
         s=temp
      return s
ob1 = Solution()
print(ob1.countAndSay(6))

输入

print(ob1.countAndSay(6))

输出

312211

相关文章


有用资源