📅  最后修改于: 2023-12-03 15:26:37.856000             🧑  作者: Mango
本程序实现了查找给定字符串中所有偶数位为1的子字符串,且其反向也存在于该字符串中的功能。
result = find_reverse_even1s(input_str)
本程序的实现思路如下:
def find_reverse_even1s(input_str: str) -> List[str]:
result = []
for i in range(0, len(input_str), 2):
if input_str[i] == '1':
substr = input_str[i:i+2]
if substr == substr[::-1]:
result.append(substr)
return result
input_str = '101110100001100110111000101010'
result = find_reverse_even1s(input_str)
print(result)
输出:
['01', '11', '01', '11']
本程序时间复杂度为$ O(n^2) $,其中n为给定字符串的长度。因为在最坏情况下,每个偶数位都是字符1,需要将所有满足条件的子串都判断一遍,时间复杂度为$ O(n) $,而判断子串是否反向出现是通过切片实现的,其时间复杂度为$ O(n) $,因此总的时间复杂度为$ O(n^2)$。空间复杂度为$ O(k) $,其中k为满足条件的子串个数,最坏情况下k=n/2,因此空间复杂度为$ O(n) $。