leetcode 外观数列 python3

本文详细介绍了如何使用 Python3 解决 LeetCode 中的外观数列问题,涵盖了三个关键知识点,包括递归思想、字符串操作和动态规划。通过实例解析和代码演示,帮助读者深入理解算法实现过程。
摘要由CSDN通过智能技术生成
方案一:
递归方法
class Solution:
    def countAndSay(self, n: int) -> str:
        if   n==1 :return "1"
        elif n==2 :return "11"    
        elif n==3 :return "21"    
        elif n==4 :return "1211"    
        elif n==5 :return "111221"    
        else :
            strs = self.countAndSay(n-1)
            lis = list(strs)
            sts =[]
            start = len(lis)-1
            q = lis[start]
            for i in range(len(lis))[::-1]:        
                temp =[]
                q = lis[start]
                
                if lis[i]!=q:
                    temp = lis[i+1:]
                    del lis[i+1:]   
                    start = i  
                    lens = 0 
                    sts.append(int(q))
                    sts.append(temp.count(q))
            sts.append(int(lis[0]))
            sts.append(lis.count(lis[0]))              
            sts_reverse = list(reversed(sts))
            return "".join(str(i) for i in sts_reverse)
        
方案二:
模拟
a=['1']
n=4
for i in range(n-1):
    b=1
    a.append('')
    aa=[]
    print(a)
    for j in range(len(a)-1):
        if a[j] == a[j+1]:
            b+=1
        else:
            aa.append(str(b))
            aa.append(str(a[j]))
            b=1
    a=aa
print(''.join(a))

知识点一:

reversed 函数返回一个反转的迭代器。

语法
以下是 reversed 的语法:

reversed(seq)
参数
seq -- 要转换的序列,可以是 tuple, string, listrange。
返回值
返回一个反转的迭代器。

知识点二:

StringBuilder sb = new StringBuilder(); 

StringBuilder是一个类,可以用来处理字符串,最简单的用法:
StringBuilder sb=new StringBuilder();
sb.Append("123");
sb.Append("456");
string str=sb.ToString();
最后得到的str字符串的值就是"123456",这种用法要比直接字符串相加效率高,比如:
string s1=123”;
string s2=456”;
string str=s1+s2;
得到的结果相同,但在处理大规模的字符串的时候第二种方法效率会变低。

知识点三:

string.join()

Python中有join()和os.path.join()两个函数,具体作用如下:
    join():    连接字符串数组。将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串
    os.path.join():  将多个路径组合后返回

一、函数说明

1、join()函数
语法:  'sep'.join(seq)

参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串

返回值:返回一个以分隔符sep连接各个元素后生成的字符串
 1 #对序列进行操作(分别使用' '与':'作为分隔符)
 2   
 3 >>> seq1 = ['hello','good','boy','doiido']
 4 >>> print ' '.join(seq1)
 5 hello good boy doiido
 6 >>> print ':'.join(seq1)
 7 hello:good:boy:doiido

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值