马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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", ""))
复制代码
|