1. <?php
    2. /**
    3. * 取给定字符串的最长子串
    4. *
    5. * abcabcbb
    6. * $array = [a => 0, b => 1, c => 2, ... , b => 6, b => 7];
    7. * @param string $s
    8. * @return int|mixed
    9. */
    10. function lengthOfLongestSubString(string $s) {
    11. if (!$s || strlen($s) === 0) {
    12. return 0;
    13. }
    14. $array = [];
    15. $ret = 0;
    16. $start = 0;
    17. for ($i = 0; $i < strlen($s); $i++) {
    18. if (isset($array[$s[$i]]) && $start <= $array[$s[$i]]) {
    19. $start = $array[$s[$i]] + 1;
    20. } else {
    21. $ret = max($ret, $i - $start + 1);
    22. }
    23. $array[$s[$i]] = $i;
    24. }
    25. return $ret;
    26. }
    27. $str = 'abcabcbb';
    28. $ret = lengthOfLongestSubString($str);
    29. print_r($ret);