1.问题描述:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb"
, the answer is "abc"
, which the length is 3.
Given "bbbbb"
, 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.
2.算法思路
其实题目求字符串中不包含重复字符的最大字串的长度,其实思路也不难。创建一个临时字符串temString和长度变量len,标志位I每移动一个字符,判断temString中是否含有当前字符,如果没有,temString中加入此字符,并判断当前len的大小与temString的长度大小;如果有,也将该字符加入到temString中,同时将temString基于第一个该字符的位置分割,将后半段重新赋予temString.
3.JAVA代码
public class Solution {
public int lengthOfLongestSubstring(String s) {
int len=0;
int i=0;
String temString="";
while(i<s.length()){
int index=temString.indexOf(String.valueOf(s.charAt(i)));
if(index>-1){
temString+=String.valueOf(s.charAt(i));
String halfleft=temString.substring(0,index+1);
temString=temString.substring(index+1,temString.length());
i++;
}else{
temString+=String.valueOf(s.charAt(i));
if(temString.length()>len){
len=temString.length();
}
i++;
}
}
return temString.length()>len?temString.length():len;
}
}