题目:给定一个字符串s,请你找出其中不含有重复字符的最长字串的长度,题目原题和测试用例如下:
实现思路:将s转成char型数组,使用while循环遍历数组,用ArrayList存储已经遍历的字符,如果装入的字符已存在ArrayList中,就将已经存在的字符以及此字符之前的所有字符移除ArrayList,最后count用来记录不重复的字串长度
实现代码:
public int lengthOfLongestSubstring(String s) {
int start=0;//最前面的下标
int end=0;//最前面的下标
char[] ch = s.toCharArray();//s转成char型数组
ArrayList<Character> subString = new ArrayList<Character>();
int count=0;
while(end<ch.length)
{
if(!subString.contains(ch[end]))
{
subString.add(ch[end]);
if(count<=subString.size())
{
count=subString.size();
}
}else {
subString.add(ch[end]);
start=subString.indexOf(ch[end]);
for(int i=0;i<=start;i++)
subString.remove(0);
}
end++;
}//while循环结束
return count;
}