突然想用 python 实现一下 split 方法,写了半天发现还不太好写,就记录下来。
思路就是利用双指针来遍历字符串,先用一个指针 p 遍历整个字符串,发现目标字符串后就用另一个指针 r 开始遍历,直到下一个目标字符串出现为止,把 p 和 r 之间的字符串加入列表,循环以上流程即可。
Talk is cheap, show the fucking code.
from typing import List
def _split(s: str, sep: str = None) -> List[str]:
res = []
n = len(s)
p = 0
sep = sep or ' '
while p < n and s[p] == sep:
p += 1
if p == n: return res
while p < n:
r = p
while r < n and s[r] != sep:
r += 1
if r > p:
res.append(s[p:r])
p = r + 1
return res