1.python查找元素 index和find区别
find找不到返回-1 index直接报错
2.发现python并没有到指定位置的翻转操作,但是发现了关于python定义的迭代器的切片操作。
object[start:end:step]
start:表示开始,从下标开始。
end:表示终止的点。前闭后开哦
如果为负数,是从右边往左边数。
特别注意:如果start在end右边,则返回一个空数组。
step:正负都可,绝对值表示步长,正负表示取值的左右。
3.滑动窗口思想
力扣3
如果相同,向右滑动 不同就加入
但是python用法是实在太差,关于set用法
if not s : return 0
a =set()
lena = 0
lenm = 0
left = 0 #从左边开始计,不断修改左边。
length = len(s)
for i in range(length):
lena = lena+1
while s[i] in a:
a.remove(s[left]) #注意用法 不要随意赋值
lena= lena -1
left = left +1
a.add(s[i])
if lena > lenm :
lenm = lena
return lenm
力扣567
滑动窗口太难了
使用python 用到了字典
length1 = len(s1) 只是需要出现的字符,次数上相等
length2 = len(s2)
lena = 0
lens = 0
a1=[0]*26 //字典 可以比较子序列的大小
a2=[0]*26
if length1 > length2:
return False
for i in range(length1):
a1[ord(s1[i])-ord('a')]+=1 //接受给定的字符,然后返回一个整数
a2[ord(s2[i])-ord('a')]+=1
if a1 == a2://长度相等,就可以
return True
for i in range(length1,length2): //滑动一下,向右移,右边的字符出现次数多一,左边字符少一
a2[ord(s2[i-length1])-ord('a')]-=1
a2[ord(s2[i])-ord('a')]+=1
if a1 == a2: //可以直接比较,其实比较好
return True
return False