mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 23:11:09 +00:00
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:
parent
321b1425e3
commit
1a254465e3
|
@ -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)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user