德州手机网站建设电话,深圳白帽优化,佛山营销网站设计,网站开发 为什么要用缩略图给定一个字符串 s #xff0c;请你找出其中不含有重复字符的 最长
子串 的长度。 示例 1:
输入: s abcabcbb
输出: 3
解释: 因为无重复字符的最长子串是 abc#xff0c;所以其长度为 3。示例 2:
输入: s bbbbb
输出: 1
解释: 因为…
给定一个字符串 s 请你找出其中不含有重复字符的 最长
子串 的长度。 示例 1:
输入: s abcabcbb
输出: 3
解释: 因为无重复字符的最长子串是 abc所以其长度为 3。示例 2:
输入: s bbbbb
输出: 1
解释: 因为无重复字符的最长子串是 b所以其长度为 1。示例 3:
输入: s pwwkew
输出: 3
解释: 因为无重复字符的最长子串是 wke所以其长度为 3。请注意你的答案必须是 子串 的长度pwke 是一个子序列不是子串。
题解
本人解法
滑动窗解法
采用双指针的方法先将右指针遍历字符串将字符串添加到集合中当遇到重复出现的字符串时暂停右指针然后左指针进行遍历左指针在遍历的时候在遇到与当前右指针所指的字符串相同之前的字符串都从集合中删除直到删除与右指针相同的字符串为止后面重复此行为。
class Solution {public int lengthOfLongestSubstring(String s) {int left 0;int right 0;int length 0;int maxLength 0;SetCharacter set new HashSet();while (right s.length()) {if (!set.contains(s.charAt(right))) {set.add(s.charAt(right));length;if (length maxLength) {maxLength length;}right;} else {while (set.contains(s.charAt(right))) {set.remove(s.charAt(left));left;length--;}set.add(s.charAt(right));length;right;}}return maxLength;}
}