2019/09/18 02-字符串习题讲解

在这里插入图片描述
lstrip,把左边的0去掉,这个是经常使用的
在这里插入图片描述
但是万一右边有空格就也需要去掉
下面的方式有点多此一举,字符串是可以直接转换成列表的,list()
在这里插入图片描述
0出现了两次在这里插入图片描述
这样就重复出现了,可以做个列表让之前的数保存,已经存在的数据就补再看了
你输入的字符串怎么着都需要遍历一遍,不遍历不知道,重复的数字,从头到尾至少遍历一遍
在这里插入图片描述
每一次count需要把所有的元素遍历一遍,时间复杂度是n2的问题**在这里插入图片描述在这里插入图片描述
去空格去0在这里插入图片描述在这里插入图片描述
反转得到迭代器,是惰性求值的东西
在这里插入图片描述
reverse是反转,就地修改,效率低,reversed效率高,倒着打印在这里插入图片描述
你要是这么做其实是不推荐,因为可以倒着打印在这里插入图片描述
这样的情况其实是一个个给你从后面拿跟上面不一样在这里插入图片描述在这里插入图片描述
在数字存在的地方打标记,+1,+1 在这里插入图片描述
解决了-1倒着走,就不需要反转,其实可以写的更加好看
在这里插入图片描述
length+1是需要的,因为前面你没有strip来删除空格在这里插入图片描述
这其实是字符串切片
在这里插入图片描述
从0开始拿到第一个,前包后不包
在这里插入图片描述在这里插入图片描述
负步长,倒着走
这其实中间调用了一次copy方法,使用了一次叠加的内存空间

在这里插入图片描述在这里插入图片描述在这里插入图片描述
reversed是返回的一个可迭代对象,join帮你把值一个个挤出来在这里插入图片描述
其实两种方式,一个正数,一个负数在这里插入图片描述在这里插入图片描述
reversed是直接从索引最后取数,不会帮你反转,效率较高在这里插入图片描述在这里插入图片描述在这里插入图片描述
总共数字就10个,都拿出来计数即可,不用遍历,效率很高10*n的效率
在这里插入图片描述
假如11,第一个1进来统计以后,第二个就没必要统计了
这个如果数字是1234567890就是10*N的复杂度
如果是123,就是3n,最好的是1n

在这里插入图片描述
最好的方式,整体复杂度就是大O(n)的
在这里插入图片描述在这里插入图片描述在这里插入图片描述
别人没限定,就可以用sort,copy在这里插入图片描述
如果是冒泡法就需要判断有没有交换,有交换继续,没有交换这一趟就中止在这里插入图片描述
空间复杂度都是10n,所以一般问时间复杂度是多少在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值