LeetCode 3

题目见:https://leetcode.com/problemset/all/

3. Longest Substring Without Repeating Characters

题目很容易明白,大串中取最大子串,并返回最大子串的长度。

直观做法就是比较字符是否重复,故将String-->char[], 遍历每个字符,将遍历到的字符存入集合,在存入集合时判断集合中是否已经存在了当前操作的字符,若没有则直接存入,若有则说明子串此处会出现重复。接下来记录当前集合中子串的长度,再将当前集合中当前相同字符及之前的字符全部从集合中删除,删除操作结束后将当前字符存入集合,更新集合大小变量,循环。。。

友情提示:删除操作注意集合索引变量的变化。。。

源代码:

char[] ch = s.toCharArray();
int max = 0;
int num = 0;
ArrayList chAL = new ArrayList();
for(int i=0;i
    if(!chAL.contains(ch[i])){

        chAL.add(ch[i]);

        num++;

    }
else{

        if(num > max) max = num;

        for(int j=0;j
            if(chAL.get(j) == ch[i]){
                chAL.remove(j);
                break;
            }else

                chAL.remove(j--);
        }
        chAL.add(ch[i]);

        num = chAL.size();
    }
}

return num > max ? num : max;

代码参考:http://www.cnblogs.com/grandyang/p/4510984.html

你可能感兴趣的:(LeetCode,java,Turning,to,JOBS)