📜  查找所有偶数为 1 的子字符串,其反向也存在于给定的字符串中(1)

📅  最后修改于: 2023-12-03 15:26:37.856000             🧑  作者: Mango

查找所有偶数为 1 的子字符串,其反向也存在于给定的字符串中

本程序实现了查找给定字符串中所有偶数位为1的子字符串,且其反向也存在于该字符串中的功能。

函数调用方式
result = find_reverse_even1s(input_str)
输入
  • 字符串:input_str(给定字符串)
输出
  • 列表:result(所有偶数位为1的子字符串,其反向也存在于给定字符串中的字符串列表)
实现思路

本程序的实现思路如下:

  1. 遍历给定字符串,筛选出偶数位为1的字符(下标从0开始)
  2. 对于每个筛选出的字符,判断其与字符串反转后的子串是否相等,若相等,则将该子串加入结果列表中
  3. 返回结果列表
代码实现
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) $。