- 邻近重复字符串和字符子串剔除
def char_duplicate(string):
if not string:
return []
output = []
last_chr = ''
for i, char in enumerate(string):
if char == last_chr:
output.append((char, i))
last_chr = char
print(output)
return output
def string_duplicate(string):
if not string:
return []
output = []
for i, char in enumerate(string):
substring = char
count = 0
for j, j_char in enumerate(string[i + 1:]):
if count > 0:
break
if char == j_char:
count += 1
tmp_sub = j_char
for k, k_char in enumerate(string[i + 1: i + 1 + j]):
if i + 1 + j + k + 1 >= len(string):
return output
if string[i + 1 + j + k + 1] != k_char:
break
substring += k_char
tmp_sub += k_char
if len(substring) == j + 1:
output.append((substring, i))
print(output)
return output
def string2_duplicate(string):
if len(string) < 2:
return []
output = []
str_len = len(string)
slow = 0
fast = 1
while slow < str_len and fast < str_len:
while fast < str_len and string[fast] != string[slow]:
fast += 1
if string[slow: fast] == string[fast: 2 * fast - slow]:
output.append((string[slow: fast], slow))
slow += 1
fast = slow + 1
print(output)
return output
if __name__ == '__main__':
string1 = 'abcgefowddagggcwods'
string2 = 'abccgefofowddagecgecgcwodsds'
char_duplicate(string1)
string_duplicate(string2)
string2_duplicate(string2)