无重复字符的最长子串(滑动窗口)

206 阅读1分钟

JAVA

class Solution {
    public int lengthOfLongestSubstring(String s) {
        String max_str = "";
        String str = "";
        int length = s.length();
        for (int i = 0; i < length; ++ i) {
            String s1 = s.substring(i, i + 1);
            int index = str.indexOf(s1);
            if (-1 != index) {
                if (max_str.length() < str.length()) {
                    max_str = str;
                }
                str = str.substring(index + 1);
            }
            str = str + s1;
        }
        return Math.max(max_str.length(), str.length());
    }
}

PHP

class Solution {

    /**
     * @param String $s
     * @return Integer
     */
    function lengthOfLongestSubstring($s) {
        $max_str = ''; $str = '';
        $len = strlen($s);
        for ($i = 0; $i < $len; ++ $i) {
            $s1 = substr($s, $i,1);
            $index = strpos($str, $s1);
            if (false !== $index) {
                if (strlen($max_str) < strlen($str)) {
                    $max_str = $str;
                }
                $str = substr($str, $index + 1);
            }
            $str .= $s1;
        }
        return max(strlen($max_str), strlen($str));
    }
}