2362 - 前缀和后缀 题目描述 给定若干由小写字母组成的字符串(这些字符串总长 ≤ 4 × 1 0 5 ≤4×10 5 ),在每个字符串中求出所有既是前缀又是后缀的子串长度。 例如: � � � � � � � � � � � � � � � � � � ababcababababcabab,既是前缀又是后缀的: � � ab, � � � � abab, � � � � � � � � � ababcabab, � � � � � � � � � � � � � � � � � � ababcababababcabab 。 输入 输入若干行,每行一个字符串。 输出 对于每个字符串,输出一行,包含若干个递增的整数,表示所有既是前缀又是后缀的子串长度。 样例 输入复制 ababcababababcabab aaaaa 输出复制 2 4 9 18 1 2 3 4 5 来源 POJ 标签
时间: 2024-04-08 18:29:23 浏览: 157
对于给定的字符串,我们需要找出所有既是前缀又是后缀的子串长度。我们可以使用两个指针来遍历字符串,并通过比较指针所指向的子串来判断是否满足条件。
以下是一个可能的实现方案:
```python
def find_prefix_suffix_substrings(string):
n = len(string)
result = []
# 遍历字符串
for i in range(1, n):
j = 0
k = i
length = 0
# 比较前缀和后缀子串
while k < n and string[j] == string[k]:
length += 1
j += 1
k += 1
if k == n:
result.append(length)
return result
# 输入字符串
strings = []
while True:
try:
string = input()
strings.append(string)
except EOFError:
break
# 对每个字符串调用函数,并输出结果
for string in strings:
result = find_prefix_suffix_substrings(string)
print(' '.join(map(str, result)))
```
这段代码会逐行读取输入的字符串,然后对每个字符串调用`find_prefix_suffix_substrings`函数来找出既是前缀又是后缀的子串长度,并打印结果。
注意:这只是一个实现方案,可能不是最优解。在处理大量数据时,可能需要进一步优化算法以提高性能。
阅读全文