文章目录:
- 题目
- 脚本一
- 脚本一逻辑
- 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)
脚本一逻辑:
- 此题的关键是处理字符串中相同的元素和不同的元素,以及字符串边界的处理
- 更多的细节需要根据情况修改脚本的漏洞
shell处理分享:
- 由于shell中的sort命令的特点【与python不一样】
- 使用shell处理此题就很方便
- https://blog.csdn.net/weixin_43428906/article/details/102888909