A substring is a contiguous sequence of characters from a st
A substring is a contiguous sequence of characters from a string. For example, “cde” is a substring of
 the string “abcdefg”. We say that substring s1 is duplicated in string s if s1 shows us in s at least two
 times, without overlapping. For example, if s == “abcdefbcdgh” then there is a duplicated substring of
 length 3: “bcd”. There is no duplicated substring of length 4 and higher.
 a) Write an algorithm in pseudo-code (in file h2.doc) in a function find_dup_str(s, n) that determines
 whether a string s contains a duplicated substring of a given length n and that returns the first
 occurring substring of length n that is duplicated (if any) or the empty string, otherwise. For the
 example above (s == “abcdefbcdgh”) with substring length 3, the substring to be returned is “bcd“.
 With length 2, the algorithm returns “bc”, and not “cd”. For this value of parameter s, if the length
 parameter is 4 or more, the algorithm returns “”.
 Write an algorithm, not a Python program.
 To get full credit make sure the algorithm has ALL the features required, as explained in the class
 material.
 b) Create a new file p2.py where you write a Python function find_dup_str(s, n) that implements the
 algorithm from part a). Parameter s is the original string and n is the length of the substring to look for.
 Your implementation must use string slicing.
 In file p2.py write after the function definition some code that reads a string and a number from the
 terminal, and then calls find_dup_str(s, n) and prints the result. Use this for testing.
Solution
def find_dup_str(s, n):
     for index in range(len(s)-n+1):
         temp_string = s[index:index+n]
         updated_string = s[index+n:]
         if updated_string.find(temp_string) != -1 and len(updated_string) != 0:
             return temp_string
     return \"\"
 def find_max_dups(s):
     if len(s) > 1:
         for i in range(len(s)):
             if find_dup_str(s, i) != \"\":
                 longest_dup = find_dup_str(s, i)
         return longest_dup
     else:
         return \"\"
while True:
     base_string = input(\"Enter a string to search through: \")
     substring_length = int(input(\"Enter a substring length: \"))
     print(find_dup_str(base_string, substring_length))
     print(find_max_dups(base_string))

