diff --git a/LabMD_1/longest_substring.py b/LabMD_1/longest_substring.py new file mode 100644 index 0000000..8034d6a --- /dev/null +++ b/LabMD_1/longest_substring.py @@ -0,0 +1,55 @@ +def countTimesOfSubstringInString(substrn, strng): + m = len(substrn) + n = len(strng) + number = 0 + for i in range(n - m + 1): + j = 0 + while j < m: + if strng[i + j] != substrn[j]: + break + j += 1 + if j == m: + number += 1 + return number + + +test_str = "xxxx" + +res = [test_str[i: j] for i in range(len(test_str)) + for j in range(i + 1, len(test_str) + 1)] + +words = set() + +for x in res: + chars = [] + strn = '' + for y in x: + if y in chars: + res.remove(x) + break + else: + chars.append(y) + strn += y + words.add(strn) + +nr_times = {} +for x in words: + nr_times[x] = countTimesOfSubstringInString(x, test_str) + +max_length = 0 +for x in words: + if len(x) > max_length: + max_length = len(x) + +max_occurence = 0 +for x in words: + if nr_times[x] > max_occurence: + max_occurence = nr_times[x] +print("First program output: ") +print("Longest duplicated substrings:") +for x in words: + if nr_times[x] > 1 and len(x) == max_length: + print(x) +print("Second program output: ") +print("Length of longest substring:") +print(max_length)