用 Python 编写程序,查找"看和说"序列中的第 n 项
pythonserver side programmingprogramming
假设我们有一个数字 n,我们必须生成"看和说"序列中的第 n 项。这是一个序列,其几个项如下所示 −
- 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
- 如果 curr 为空字符串,则
- temp := temp + count as string + curr
- 返回 s
让我们看看下面的实现以便更好地理解 −
示例
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 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

