【发布时间】:2018-03-26 09:53:42
【问题描述】:
现在我知道这个问题已经有了正确答案,但我只是想找出为什么我自己的代码不起作用。
问题:给定一个字符串,找出最长不重复字符的子串的长度。给定“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));
}
}
谢谢!
【问题讨论】:
-
提示:在您的循环中,您现在实际上是在查看 characters。你只使用
s来找出它的长度。鉴于您以y = x + 1开头并增加y,您预计if (x != y)何时为假? -
下一个提示:现在是学习调试的好时机。你有一个相对简单的程序,所以如果你对它进行调试,你应该能够看到它在哪里表现得不像你期望的那样。
-
@JonSkeet 我一直试图找出问题所在,但看不到它,谢谢,我现在用 .charAt() 修复了它。现在,我实际上发现我的代码是一团糟,即使修复它也无法正常工作。