Leetcode_38【报数】

文章目录:

  • 题目
  • 脚本一
  • 脚本一逻辑
  • shell处理分享

题目:

报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

1. 1
2. 11
3. 21
4. 1211
5. 111221
1 被读作  "one 1"  ("一个一") , 即 11。
11 被读作 "two 1s" ("两个一"), 即 21。
21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

注意:整数顺序将表示为一个字符串。

示例 1:

输入: 1
输出: "1"
示例 2:

输入: 4
输出: "1211"


脚本一:【用时:40ms】

class Solution:
    def countAndSay(self, n: int) -> str:
        str1 = ""
        str2 = ""
        if n == 0 :
            return(None)
        for i in range(n):
            if i == 0:
                str1 = "1"
            elif i == 1:
                str1 = "11" 
            else:
                str2 = ""
                n1 = 0
                for i in range(len(str1) - 1):
                    if str1[i] == str1[i + 1]:
                        n1 += 1
                        if i == len(str1) - 2:
                            n1 += 1
                            str2 += str(n1) + str1[i]
                    else:
                        n1 += 1
                        str2 += str(n1) + str1[i]
                        n1 = 0 
                        if i == len(str1) - 2:
                            n1 += 1
                            str2 += str(n1) + str1[i+1]
                str1 = str2
        return(str1)    

脚本一逻辑:

  1. 此题的关键是处理字符串中相同的元素和不同的元素,以及字符串边界的处理
  2. 更多的细节需要根据情况修改脚本的漏洞

shell处理分享:

  • 由于shell中的sort命令的特点【与python不一样】
  • 使用shell处理此题就很方便
  • https://blog.csdn.net/weixin_43428906/article/details/102888909

猜你喜欢

转载自www.cnblogs.com/mailong/p/12070853.html