现在我知道这个问题已经有了正确的答案,但我只是想找到为什么我自己的代码无法正常工作。
问题:给定一个字符串,找到最长子字符串的长度而不重复字符。鉴于" abcabcbb",答案为" abc",长度为3.我的代码输出时间太长,输出为1.
我的代码:
public class problemOne {
static int lengthOfLongestSubstring(String s) {
int count, longest = 1;
for (int x = 0; x < s.length(); x++) {
count = 1;
for (int y = x + 1; y < s.length(); y++) {
if (x != y) {
count++;
} else {
longest = Math.max(longest, count);
break;
}
}
}
return longest;
}
public static void main(String[] args) {
String str = "abcabcbb";
System.out.println(lengthOfLongestSubstring(str));
}
}
谢谢!
答案 0 :(得分:0)
在内部循环中,有:if (x != y)
。我想你的意思是在这里比较字符,而不是数字。
然后:你如何内循环&#34;知道&#34;之前处理过哪些字符?也许内部循环用于比较当前字符与已处理的字符?但相反,你要比较数字。