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,所以一般问时间复杂度是多少
2019/09/18 02-字符串习题讲解
最新推荐文章于 2021-12-13 11:05:33 发布