leetcode第三题用哈希表和双指针如何解决,并写出对应代码
时间: 2023-06-01 09:07:35 浏览: 170
好的,我可以回答你关于LeetCode第三题的问题。这道题要求找到一个字符串中最长的不重复子串的长度。解决这道题的常见方法是使用哈希表和双指针。具体做法如下:
1. 定义两个指针i和j,分别表示子串的起始位置和结束位置;
2. 遍历字符串,假设当前遍历到位置j,如果当前字符已经在哈希表中出现过,就更新左指针i的位置,使得i向右移动一格,同时从哈希表中删除i指向的字符。这个过程可以用一个while循环来实现,直到当前字符不在哈希表中为止;
3. 每次遍历完一个字符后,都更新一下最长不重复子串的长度;
4. 最终返回最长不重复子串的长度。
下面是对应的Python代码:
```
def lengthOfLongestSubstring(s: str) -> int:
n = len(s)
ans = 0
# 字符串 -> 索引 的哈希表
index = {}
i = 0
for j in range(n):
if s[j] in index:
i = max(index[s[j]], i)
ans = max(ans, j - i + 1)
index[s[j]] = j + 1
return ans
```
希望这个回答可以帮到你。如果你有其他问题,可以继续问我。
阅读全文