马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 qiuyouzhi 于 2020-3-21 21:31 编辑
用 Python 实现 str.find() 方法
思路:
最开始是想挨个遍历(很zz,不要学),
然后简单一些的都成功了,结果:
print(find('1'*1000010000+'2', '2'))
当场超时。。。
痛定思痛,改了一个思路:
用两个指针(双指针,会的可以略过),一个指向开头,
一个指向末尾。
如果开头没找到,开头指针就指向后一个元素,
如果结尾没找到,就指向前一个元素。
def find(x,sub,start = None, end = None):
# 判断start和end,不多说
if len(sub) <= 0:
return 0
if start != None and end != None:res = x[start:end]
elif start != None:res = x[start:]
elif end != None:res = x[:end]
else:res = x[:]
# 先简单判断一下,不在里面直接返回-1
if sub not in res:
return -1
i,j = 0,len(res)-1 # 一个指向开头,一个指向结尾
while j >= i:
if sub[0] == res[i]:
return i
elif sub[0] == res[j]:
return j
if sub[0] != res[i]:
i += 1
if sub[0] != res[j]:
j -= 1
return -1
print(find("123123", ""))
|