С учетом строки найдите длину самой длинной подстроки без повторяющихся символов. Например, самые длинные подстроки без повторения букв для «abcabcbb» являются «ABC», которой длина равна 3. Для «BBBBB» длинная подстрока «б», с длиной 1.самая длинная подстрока, предел превышен java
public static int lengthOfLongestSubstring(String s) {
if (s.length()==0)
return 0;
int maxlen = 1;
HashMap<Character, ArrayList<Integer>> check = new HashMap<Character,ArrayList<Integer>>();
for (int i = 0; i < s.length(); i++) {
for (int j = i; j < s.length(); j++) {
if (!check.containsKey(s.charAt(j))) {
ArrayList<Integer> value= new ArrayList<>();
value.add(j);
check.put(s.charAt(j), value);
}
else {
maxlen = Math.max(j - i, maxlen);
ArrayList<Integer> temp = check.get(s.charAt(j));
i=temp.get(temp.size()-1);
// get the last index(biggest index) of the key value
check.clear();
break;
}
if(j==s.length()-1) {
maxlen = Math.max(j - i + 1, maxlen);
}
}
}
return maxlen;
}
}
Для последний тест длинной повторяемой строки, превышен лимит времени. Не знаю, как оптимизировать. ищут улучшения, спасибо
Что именно вы пытаетесь вычислить? Некоторые комментарии в вашем коде могут быть полезными, а заголовок имеет пропуски. – Turing85
Как вы ожидаете, что мы выясним, что должен делать этот код, если вы не комментируете код или не описываете входы и выходы. Мы можем догадаться, я полагаю, но это было бы далеко не продуктивно. –
Почему самая длинная неповторяемая 'String'' 3'? В чем тут логика? –