一、题目概述
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例:
示例1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例2:
输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
二、解决方法
双指针法
class Solution {
public int lengthOfLongestSubstring(String s) {
//定义两个指针
int flag = 0;
int p = 0;
//无重复的最长子串的长度
int maxlength = 0 ;
//定义每次出现重复字符之前最大的长度
int len = 0 ;
while(p < s.length()){
int index = s.indexOf(s.charAt(p),flag);
if(index<p){
if(maxlength>len) len = maxlength;
if(len > (s.length()-1-index)) return len;
maxlength = p - index - 1;
flag = index + 1;
}
maxlength++;
p++;
}
return maxlength;
}
}