给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "abcabcbb"
,没有重复字符的最长子串是 "abc"
,那么长度就是3。
给定 "bbbbb"
,最长的子串就是 "b"
,长度是1。
给定 "pwwkew"
,最长子串是 "wke"
,长度是3。
想了个java版解决方案:
将临时字符放在list
public int lengthOfLongestSubstring(String s) {
if(s == null || s.length() == 0){
return 0;
}
if(s.length() == 1){
return 1;
}
String[] arr = s.split("");
List<String> temp;
int max = 0;
int count = 0;
for(int i = 0;i < arr.length;i++){
temp = new ArrayList<>();
temp.add(arr[i]);
count = 1;
for(int j = i + 1;j < arr.length;j++){
if(temp.contains(arr[j])){
break;
}else{
temp.add(arr[j]);
count++;
}
}
if(count > max){
max = count;
}
}
return max;
}
这个的问题就是list.contains遍历查询次数会比较多,重复创建list