如何求字符串中连续不重复的字符
时间: 2024-05-14 13:12:12 浏览: 15
可以使用双指针来求解。
具体步骤如下:
1. 定义两个指针 i 和 j,分别指向字符串的开头。
2. 定义一个 set 集合,用于记录已经遍历过的字符。
3. 定义一个变量 max_len,用于记录最长的连续不重复子串长度。
4. 开始遍历字符串,当 j 指向的字符不在 set 集合中时,将该字符加入 set 集合中,并更新 max_len 的值。
5. 当 j 指向的字符在 set 集合中时,将 i 指针向右移动一位,直到 i 指向的字符不在 set 集合中为止。
6. 重复步骤 4 和步骤 5,直到 j 指向字符串的末尾。
7. 返回 max_len 的值即为最长的连续不重复子串长度。
Python 代码实现如下:
```python
def lengthOfLongestSubstring(s: str) -> int:
i, j = 0, 0
max_len = 0
char_set = set()
while j < len(s):
if s[j] not in char_set:
char_set.add(s[j])
max_len = max(max_len, j - i + 1)
j += 1
else:
char_set.remove(s[i])
i += 1
return max_len
```
相关问题
如何找出两个字符串中连续的重复的字符串
要找出两个字符串中连续的重复字符串,可以按照以下步骤进行:
1. 首先,将两个字符串中长度较小的那个设为模式串,长度较大的那个设为文本串。
2. 对模式串进行哈希,将每个子串哈希成一个唯一的整数。
3. 对文本串进行滑动窗口匹配,即将模式串从文本串头部开始滑动,每次滑动一个字符,对比模式串哈希值和文本串当前子串的哈希值是否相等。
4. 如果相等,则说明找到了一个重复子串。此时需要再对比模式串和文本串当前子串的每个字符是否都相等,以确保它们是连续的重复子串。
5. 如果不相等,则继续向后滑动,直到文本串被遍历完为止。
通过以上方法,就可以找出两个字符串中连续的重复字符串。需要注意的是,这种方法只能找到长度大于等于2的重复子串。
去除Arraylist中一串连续的字符串中重复的元素
这个问题可以通过遍历ArrayList并逐个比较元素来解决。具体的步骤如下:
1. 定义一个新的ArrayList来存储去重后的结果。
2. 定义一个指针变量p,用来记录当前连续字符串的起始位置。
3. 定义一个指针变量q,用来遍历连续字符串。
4. 定义一个HashSet来记录已经出现过的元素。
5. 遍历原ArrayList,对于每个元素进行如下处理:
- 如果该元素不在HashSet中,说明该元素是新出现的,将其加入HashSet和结果ArrayList中。
- 如果该元素已经在HashSet中,说明该元素重复了,不需要加入结果ArrayList中。
6. 如果遇到连续字符串的结尾,即指针q已经到达了ArrayList的末尾,需要将指针p和q都向前移动,继续处理下一个连续字符串。
下面是Java实现的示例代码:
```java
public static ArrayList<String> removeDuplicates(ArrayList<String> list) {
ArrayList<String> result = new ArrayList<String>();
HashSet<String> set = new HashSet<String>();
int p = 0, q = 0;
while (p < list.size() && q < list.size()) {
if (!set.contains(list.get(q))) {
set.add(list.get(q));
result.add(list.get(q));
q++;
} else {
set.remove(list.get(p));
p++;
}
if (q == list.size()) {
set.clear();
p++;
q = p;
}
}
return result;
}
```
这个算法的时间复杂度是O(n),其中n是ArrayList的大小。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)