LeetCode习题记录(3)Longest Substring Without Repeating Characters

来源:互联网 发布:java开发常见错误 编辑:程序博客网 时间:2024/06/05 23:46

我的solution

public class Solution {    public int lengthOfLongestSubstring(String s) {        char[] c = s.toCharArray();        String[] str = new String[c.length];        for(int i = 0;i<c.length;i++){            str[i] = "";            str[i]+=c[i];            for(int j=i+1;j<c.length;j++){                if(notIn(c[j],str[i]))                    str[i]+=c[j];                else                    break;            }        }        int[] len = new int[str.length+1];        for(int i = 0;i<str.length;i++){            len[i] = str[i].length();        }        int max = len[0];        for(int i = 1;i<len.length;i++){            if(len[i] > max)                max = len[i];        }        return max;    }    public boolean notIn(char c,String s){        boolean result = true;        for (int i = 0; i < s.length(); i++) {            if (c == s.charAt(i))                return false;        }        return result;    }}

有一个test case未通过,Time Limit Exceeded,超时

Discuss中最高赞的solution

public int lengthOfLongestSubstring(String s) {        if (s.length()==0) return 0;        HashMap<Character, Integer> map = new HashMap<Character, Integer>();        int max=0;        for (int i=0, j=0; i<s.length(); ++i){            if (map.containsKey(s.charAt(i))){                j = Math.max(j,map.get(s.charAt(i))+1);            }            map.put(s.charAt(i),i);            max = Math.max(max,i-j+1);        }        return max;    }

优化代码,要熟练掌握java的高级语法

阅读全文
0 0