给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 "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
本文探讨了如何找出给定字符串中不含有重复字符的最长子串长度问题,并提供了一个Java实现方案。通过使用列表存储临时字符,遍历字符串检查重复字符,以此找到最长无重复子串。
898

被折叠的 条评论
为什么被折叠?



