输入一行字符串,找出其中出现的相同且长度最长的字符串(相同的两个字符串可以部分重叠),输出它及其首字符的位置(可能有多个解)。
时间: 2023-04-28 22:05:42 浏览: 121
python 写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度(示例)
可以使用哈希表来解决这个问题。首先,将字符串中所有可能的子串都存入哈希表中,以子串为键,出现次数为值。然后,遍历哈希表,找到出现次数最多的子串,即为相同且长度最长的字符串。最后,输出该字符串及其首字符的位置。
具体实现可以参考以下代码:
```python
def find_longest_substring(s):
n = len(s)
substr_dict = {}
for i in range(n):
for j in range(i+1, n+1):
substr = s[i:j]
if substr in substr_dict:
substr_dict[substr] += 1
else:
substr_dict[substr] = 1
max_count = 0
max_substr = ''
for substr, count in substr_dict.items():
if count > max_count:
max_count = count
max_substr = substr
positions = [i for i in range(n) if s.startswith(max_substr, i)]
return max_substr, positions
```
该函数接受一个字符串作为输入,返回相同且长度最长的子串及其首字符的位置。例如:
```python
s = 'ababcabcabababd'
print(find_longest_substring(s))
# 输出:('abab', [0, 6, 9])
```
在这个例子中,字符串中出现了多个相同且长度为4的子串,即'abab'和'babd',但是'abab'出现的次数最多,因此它是相同且长度最长的字符串。它在字符串中出现的位置分别是0、6和9。
阅读全文