From 00911f00b02fe71a1c6d9a1baef591fe629d6119 Mon Sep 17 00:00:00 2001 From: Milad Khoshdel Date: Thu, 7 May 2026 13:10:00 +0330 Subject: [PATCH] Refactor custom split implementation --- strings/split.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/strings/split.py b/strings/split.py index ed194ec69c2f..3b591023268b 100644 --- a/strings/split.py +++ b/strings/split.py @@ -1,34 +1,36 @@ -def split(string: str, separator: str = " ") -> list: +def split(string: str, separator: str = " ") -> list[str]: """ - Will split the string up into all the values separated by the separator - (defaults to spaces) + Split string into values separated by separator. - >>> split("apple#banana#cherry#orange",separator='#') + >>> split("apple#banana#cherry#orange", separator="#") ['apple', 'banana', 'cherry', 'orange'] >>> split("Hello there") ['Hello', 'there'] - >>> split("11/22/63",separator = '/') + >>> split("11/22/63", separator="/") ['11', '22', '63'] - >>> split("12:43:39",separator = ":") + >>> split("12:43:39", separator=":") ['12', '43', '39'] - >>> split(";abbb;;c;", separator=';') + >>> split(";abbb;;c;", separator=";") ['', 'abbb', '', 'c', ''] """ - split_words = [] + if len(separator) != 1: + raise ValueError("separator must be exactly one character") + + parts: list[str] = [] + start = 0 - last_index = 0 for index, char in enumerate(string): if char == separator: - split_words.append(string[last_index:index]) - last_index = index + 1 - if index + 1 == len(string): - split_words.append(string[last_index : index + 1]) - return split_words + parts.append(string[start:index]) + start = index + 1 + + parts.append(string[start:]) + return parts if __name__ == "__main__":