def solution(str1):
def can_generate(s, target):
"""检查字符串s是否能通过操作生成目标字符串target"""
current = s
used = {current}
q = [current]
while q and len(q[0]) <= len(target):
current = q.pop(0)
if current == target:
return True
for k in range(len(current)):
next_str = current + current[k:]
if len(next_str) <= len(target) and next_str not in used:
if target.startswith(next_str):
used.add(next_str)
q.append(next_str)
return False
def get_all_prefixes(s):
"""获取字符串的所有可能前缀"""
result = []
for i in range(1, len(s) + 1):
prefix = s[:i]
if can_generate(prefix, s):
result.append(prefix)
return result
possible_prefixes = get_all_prefixes(str1)
if not possible_prefixes:
return str1
return min(possible_prefixes, key=len)
if __name__ == "__main__":
test_cases = [
"abbabbbabb",
"abbbabbbb",
"jiabanbananananiabanbananananbananananiabanbananananbananananbananananbanananan",
"selectecttectelectecttectcttectselectecttectelectecttectcttectectelectecttectcttectectcttectectcttectectcttect",
"discussssscussssiscussssscussssdiscussssscussssiscussssscussssiscussssscussss",
"lflsdjlskjfl"
]
expected_results = [
"ab",
"ab",
"jiaban",
"select",
"discus",
"lflsdjlskjfl"
]
for i, test_case in enumerate(test_cases):
result = solution(test_case)
print(f"Test case {i + 1}: {result == expected_results[i]}")