本文主要是介绍算法-------无重复字符的最长子串(Java版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
解决方法:
使用滑动窗口:
public int lengthOfLongestSubstring(String s) {char[] chars = s.toCharArray();int max = 0;Set<Character> characters = new HashSet<>();int i = 0, j =0;for (; i < chars.length && j < chars.length;j++){if (characters.contains(chars[j])) {max = Math.max(max,j-i);while (i < j){if (chars[j] == chars[i]) {i++;break;}else {characters.remove(chars[i]);}i++;}}else {characters.add(chars[j]);}}max = Math.max(max,j-i);return max;}
这篇关于算法-------无重复字符的最长子串(Java版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!