代码拉取完成,页面将自动刷新
同步操作将从 doocs/leetcode 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
"abc",所以其
示例 2:
"b"
示例 3:
"wke"
示例 4:
输入: s = "" 输出: 0
提示:
0 <= s.length <= 5 * 104
s
由英文字母、数字、符号和空格组成[i, j]
区间内字符相同的元素,更新 i 的值,此时 [i, j]
区间内不存在重复字符,计算 res 的最大值。class Solution:
def lengthOfLongestSubstring(self, s: str) -> int:
res, chars = 0, dict()
i = j = 0
while j < len(s):
if s[j] in chars:
# chars[s[j]]+1 可能比 i 还小,通过 max 函数来锁住左边界
# e.g. 在"tmmzuxt"这个字符串中,遍历到最后一步时,最后一个字符't'和第一个字符't'是相等的。如果没有 max 函数,i 就会回到第一个't'的索引0处的下一个位置
i = max(i, chars[s[j]] + 1)
res = max(res, j - i + 1)
chars[s[j]] = j
j += 1
return res
class Solution {
public int lengthOfLongestSubstring(String s) {
int res = 0;
Map<Character, Integer> chars = new HashMap<>();
for (int i = 0, j = 0; j < s.length(); ++j) {
char c = s.charAt(j);
if (chars.containsKey(c)) {
// chars.get(c)+1 可能比 i 还小,通过 max 函数来锁住左边界
// e.g. 在"tmmzuxt"这个字符串中,遍历到最后一步时,最后一个字符't'和第一个字符't'是相等的。如果没有 max 函数,i 就会回到第一个't'的索引0处的下一个位置
i = Math.max(i, chars.get(c) + 1);
}
chars.put(c, j);
res = Math.max(res, j - i + 1);
}
return res;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。