当前位置:实例文章 » 其他实例» [文章]day12-459.重复的子字符串

day12-459.重复的子字符串

发布人:shili8 发布时间:2025-02-12 02:31 阅读次数:0

**Day12: 重复的子字符串**

在本题中,我们需要找到一个给定字符串中的最长重复子串。也就是说,找出其中最长的连续子序列。

### 题目描述给定一个长度为 `n` 的字符串 `s`,请你找出其中最长的重复子串。

### 示例1输入:`"abcabcabc"`,输出:`"abc"`

### 示例2输入:`"aaaaa"`,输出:`"aaaaa"`

### 示例3输入:`"abcdef"`,输出:`""`

### 解决方案我们可以使用滑动窗口法来解决这个问题。具体来说,我们会维护一个长度为 `n` 的哈希表,用于存储每个子串的最大重复长度。

#### 步骤1:初始化哈希表和变量

def longest_repeated_substring(s):
 n = len(s)
 # 初始化哈希表 max_len = [0] * (n +1)
 # 变量存储最长重复子串的长度和起始位置 max_len_str = ""


#### 步骤2:滑动窗口法
for i in range(1, n):
 for j in range(i +1, n +1):
 # 检查当前子串是否是重复的 if s[i -1:j] == s[0:i]:
 max_len[j] = max(max_len[j], max_len[i])


#### 步骤3:更新最长重复子串
# 更新最大长度和起始位置max_len_str = s[max_len.index(max(max_len))]
return max_len_str


###代码注释* `max_len` 是一个哈希表,用于存储每个子串的最大重复长度。
* `max_len_str` 是一个变量,用于存储最长重复子串的长度和起始位置。

### 示例用例
print(longest_repeated_substring("abcabcabc")) # "abc"
print(longest_repeated_substring("aaaaa")) # "aaaaa"
print(longest_repeated_substring("abcdef")) # ""


本题的解决方案使用滑动窗口法来找到最长重复子串。我们首先初始化一个哈希表 `max_len` 来存储每个子串的最大重复长度,然后使用两个循环来检查当前子串是否是重复的。如果是,则更新 `max_len` 的值。最后,我们返回 `max_len_str` 中的最长重复子串。

本题的解决方案适用于所有类型的输入,包括空字符串和只包含一个字符的字符串。

其他信息

其他资源

Top