没有重复字符的最长子串 - Java

时间:2017-10-14 11:09:38

标签: java string substring

现在我知道这个问题已经有了正确的答案,但我只是想找到为什么我自己的代码无法正常工作。

问题:给定一个字符串,找到最长子字符串的长度而不重复字符。鉴于" 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));
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

在内部循环中,有:if (x != y)。我想你的意思是在这里比较字符,而不是数字。

然后:你如何内循环&#34;知道&#34;之前处理过哪些字符?也许内部循环用于比较当前字符与已处理的字符?但相反,你要比较数字。