Question
Given a string, find the length of the longest substring without repeating characters.
Example
Given "abcabcbb" , the answer is"abc", which the length is 3.
Given "bbbb", the answer is"b"
, with the length of 1.
Given "pwwkew", the answer is"wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.
Solution
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length()<=1){ //如果字符串长度为0或1,返回其长度
return s.length();
}
String temp=s.substring(0,1); //截取字符串s的第一个字符
int max=1;
for(int i=1;i<s.length();i++){ //判断子串中是否有跟当前s.charAt(i)一样的字符
if(!temp.contains(String.valueOf(s.charAt(i)))){
temp+=s.charAt(i);
}
else{
if(max<temp.length()){
max=temp.length();
} //若有,则从下一个字符开始截取后半段字符串
temp=temp.substring(temp.indexOf(s.charAt(i))+1)+String.valueOf(s.charAt(i));
}
if(max<temp.length()){
max=temp.length();
}
}
return max;
}
}