迭代插入反向搜索

问题描述 投票:0回答:1

我有一个代码可以迭代地将自身插入到用户指定的位置。它给出了一个长字符串作为迭代的结果。我需要做的是相反的事情。编写一段代码,接受一个字符串并使用迭代来找出初始字符串是什么以及插入位置。

def iterative_insertion(S, positions):
    R = S

    for pos in positions:
        if 0 <= pos <= len(R):
            R = R[:pos] + R + R[pos:]

    return R

# Example usage
S = "abcd"
positions = [0, 1, 1, 13]
result = iterative_insertion(S, positions)
expected = "aaabcdabcdbcdaaabcdabcdbcdabcdabcdabcdbcdabcdabcdabcdabcdbcdabcd"

print("Expected: ", expected)
print("Result: ", result)
print("Match: ", result == expected)
print("Lengths: ", len(result), len(S), len(expected))

我需要一个函数,它将接受“aaabcdabcdbcdaaabcdabcdbcdabcdabcdabcdbcdabcdabcdabcdabcdbcdabcd”的输入并使用迭代来查找初始字符串和插入位置。

换句话说,输出将是

Inital string = "abcd"
positions = [0, 1, 1, 13]

这就是我所拥有的

def reverse_iterative_insertion(s):
    initial_string = ""
    positions = []
    current_position = 0

    for char in s:
        if char not in initial_string:
            initial_string += char
        else:
            current_position = initial_string.index(char)
            positions.append(current_position)
            initial_string = initial_string[:current_position] + char + initial_string[current_position:]

    return initial_string, positions

# Example usage
input_string = "aaabcdabcdbcdaaabcdabcdbcdabcdabcdabcdbcdabcdabcdabcdabcdbcdabcd"
initial, insert_positions = reverse_iterative_insertion(input_string)

print("Initial string:", initial)
print("Insertion positions:", insert_positions)
python search insert iteration reverse
1个回答
0
投票

看起来问题只是想找到字符串中存在的模式。

所以这个(或类似的变体)可以工作。

input_string = "aaabcdabcdbcdaaabcdabcdbcdabcdabcdabcdbcdabcdabcdabcdabcdbcdabcd"

pattern = "abcd"

matches = []
start_idx = 0
while True:
    idx = input_string.find(pattern, start_idx)
    if idx == -1:
        break
    matches.append(idx)
    start_idx = idx + 1

print(matches)

返回此(对于给定的示例):

[2, 6, 15, 19, 26, 30, 34, 41, 45, 49, 53, 60]
© www.soinside.com 2019 - 2024. All rights reserved.