这道题的关键还是掌握好循环,控制两个指针p,q。p在左,q在右。如果q字符等于p字符的话,则p可以向右挪一个。如果q字符等于p到q之间的一个字符的话则,q移动到相同字符右边一个。之前的字符串长度可以进行存档,即与最长长度记录进行比较。

public class Solution {
    public int lengthOfLongestSubstring(String s) {
        
        if (s.length() == 0)
            return 0;
        
        int p = 0;
        int q = 1;
        int length = s.length();
        int maxLength = 0;
        while (q < length) {
            if (s.charAt(q) == s.charAt(p)) {
                p++;
                q++;
                continue;
            } else {
                for (int i = p + 1; i < q; i++) {
                    if (s.charAt(i) ==s.charAt(q)) {
                        if (maxLength < (q-p)) {
                            maxLength = q - p;
                        }
                        p = i + 1;
                        break;
                    }
                }
                q++;
            }
        }
        
        if (maxLength < (q - p)) {
            maxLength = q - p;
        }
        
        return maxLength;
    }
}

chenatu
106 声望12 粉丝