python 实现 split 函数

突然想用 python 实现一下 split 方法,写了半天发现还不太好写,就记录下来。

思路就是利用双指针来遍历字符串,先用一个指针 p 遍历整个字符串,发现目标字符串后就用另一个指针 r 开始遍历,直到下一个目标字符串出现为止,把 p 和 r 之间的字符串加入列表,循环以上流程即可。

Talk is cheap, show the fucking code.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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