【发布时间】:2016-08-11 19:35:09
【问题描述】:
所以我试图解决这个问题给定一个字符串,找到最长子字符串的长度而不重复字符。我知道基于 HashMap 的解决方案,但是在子字符串重叠的情况下会失败。这是我的代码。
public static int lengthOfLongestSubstring(String s) {
Deque<Character> primary = new ArrayDeque<>();
Deque<Character> secondary = new ArrayDeque<>();
for (int i = 0; i < s.length() ; i++) {
char c = s.charAt(i);
if(primary.contains(c)){
while(primary.peek() != c){
secondary.offerLast(primary.poll());
}
secondary.offerFirst(c);
primary = secondary;
secondary.clear();
}else{
primary.offerFirst(c);
}
}
return primary.size();
}
这在我做primary = secondary 的那一行失败了,否则我认为我在逻辑上做对了。
为了测试正确性,我使用了字符串dvdf
有人可以帮我理解为什么这不起作用。
【问题讨论】: