给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例 1:
输入: "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
示例 2:输入: "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
示例 3:输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的参考答案
public class Solution {
public int lengthOfLongestSubstring(String s) {
if(s.length()<1){
return 0;
}
if(s.length()==1){
return 1;
}
String subS = "";
int subSLength = 1;
int index = 0;
subS +=s.charAt(0);
char temChar ;
subSLength = subS.length();
boolean isInSubS = false;
while(index<s.length()){
if(subSLength>=s.substring(index).length()){
break;
}
for(int i=index+1;i<s.length();i++){
temChar = s.charAt(i);
for(int j=0;j<subS.length();j++){
if(temChar==subS.charAt(j)){
if(subS.length()>subSLength){
subSLength = subS.length();
}
isInSubS = true;
if(j==subS.length()-1){
subS = ""+temChar;
index = i;
}
else{
subS = ""+subS.charAt(j+1);
index = index+j+1;
}
break;
}
}
if(!isInSubS){
subS += temChar;
}
else{
isInSubS = false;
break;
}
}
}
return subSLength;
}
}
我的测试代码:
public class TestLengthOfLongestSubstring {
public static void main(String[] args) {
Solution sln = new Solution();
String s = "dvadavsefddes12345678";
int ret = sln.lengthOfLongestSubstring(s);
System.out.println("result:"+ret);
}
}