Naive string doctests + typehints (#2054)

* Added doctests

* Added __main__

* Commit suggestion

* Undo changes to keep only doctests and typehints

* Reundo function name with params

* Update naive_string_search.py

* Update naive_string_search.py

* Update naive_string_search.py

* Update naive_string_search.py

Co-authored-by: Christian Clauss <cclauss@me.com>
This commit is contained in:
mateuszz0000 2020-06-01 15:40:40 +02:00 committed by GitHub
parent 321b1425e3
commit 1a254465e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,4 +1,6 @@
""" """
https://en.wikipedia.org/wiki/String-searching_algorithm#Na%C3%AFve_string_search
this algorithm tries to find the pattern from every position of this algorithm tries to find the pattern from every position of
the mainString if pattern is found from position i it add it to the mainString if pattern is found from position i it add it to
the answer and does the same for position i+1 the answer and does the same for position i+1
@ -9,14 +11,25 @@ Complexity : O(n*m)
""" """
def naivePatternSearch(mainString, pattern): def naive_pattern_search(s: str, pattern: str) -> list:
patLen = len(pattern) """
strLen = len(mainString) >>> naive_pattern_search("ABAAABCDBBABCDDEBCABC", "ABC")
[4, 10, 18]
>>> naive_pattern_search("ABC", "ABAAABCDBBABCDDEBCABC")
[]
>>> naive_pattern_search("", "ABC")
[]
>>> naive_pattern_search("TEST", "TEST")
[0]
>>> naive_pattern_search("ABCDEGFTEST", "TEST")
[7]
"""
pat_len = len(pattern)
position = [] position = []
for i in range(strLen - patLen + 1): for i in range(len(s) - pat_len + 1):
match_found = True match_found = True
for j in range(patLen): for j in range(pat_len):
if mainString[i + j] != pattern[j]: if s[i + j] != pattern[j]:
match_found = False match_found = False
break break
if match_found: if match_found:
@ -24,9 +37,6 @@ def naivePatternSearch(mainString, pattern):
return position return position
mainString = "ABAAABCDBBABCDDEBCABC" if __name__ == "__main__":
pattern = "ABC" assert naive_pattern_search("ABCDEFG", "DE") == [3]
position = naivePatternSearch(mainString, pattern) print(f"{naive_pattern_search('ABAAABCDBBABCDDEBCABC', 'ABC') = }")
print("Pattern found in position ")
for x in position:
print(x)