给定一个字符串,找出最长的不具有重复字符的子串的长度。例如,“abcabcbb”不具有重复字符的最长子串是“abc”,长度为3。对于“bbbbb”,最长的不具有重复字符的子串是“b”,长度为1。
<?php
function getMaxSubStr($string) {
$len = strlen($string);
$arrStr = array($string[0] => 1);
$maxStr = '';
$maxStrLen = 0;
for ($i = 1; $i < $len; $i ++) {
if (isset($arrStr[$string[$i]])) {
foreach ($arrStr as $key => $value) {
unset($arrStr[$key]);
if ($key == $string[$i]) {
break;
}
}
}
$arrStr[$string[$i]] = 1;
$num = count($arrStr);
if ($maxStrLen < $num) {
$newStr = '';
foreach ($arrStr as $key => $item) {
$newStr .= $key;
}
$maxStr = $newStr;
$maxStrLen = $num;
}
}
return $maxStr;
}
$str = 'abcadebc';
$ret = getMaxSubStr($str);
print $ret;