读书人

没重复字母的最长子串长度

发布时间: 2013-11-02 19:41:10 作者: rapoo

没有重复字母的最长子串长度
"bbbbb"最长的没有重复字母的子串是1;

? ? 思路是:

? ? ? ? ? ? ? ? 将字符串转换成字符数组,然后逐一添加到list中,如果list包含了这个字符,求此时的list长度,如果,大于之前的子串的长度,将最大长度设置为此子串的长度,并且返回

?

public class Solution2 {public int lengthOfLongestSubstring(String s) {           if (s.length() == 0) {return 0;}if (s.length() == 1) {return 1;}List<Character> list=new ArrayList<Character>();int Max=1;char []temp=s.toCharArray();for(int i=0;i<temp.length;i++){if(list.contains(temp[i])){int temp1=list.size();Max=Max>=temp1?Max:temp1;int index=list.indexOf(temp[i]);list=list.subList(index+1,list.size());//剔除包括此字母前面的所有字母。只要从这个字母之后的所有字母}list.add(temp[i]);}if(list.size()>Max)//我犯的错误之一:子串位于最后没有,就不能进入上面的if条件,所以长度就是此时子串的长度:例如ababcd,才能返回4,否则是2return list.size();return Max;}public static void main(String[] args) {Solution2 s = new Solution2();int k = s.lengthOfLongestSubstring("qopubjguxhxdipfzwswybgfylqvjzhar");int d = s.lengthOfLongestSubstring("ababcd");System.out.println(k);System.out.println(d);}}

?

?

读书人网 >编程

热点推荐