php 算出延续重复的子字符串

原创
2016-06-13 11:55:00 726浏览

php 算出连续重复的子字符串

上次突然想到了一道算法题,题目如下:一个字符串,算出重复且长度最长的子字符串。下面是我写的算法,基本思想是先求出重复的字符串,组成一个数组,在求出该数组每个元素的长度组成一个新的数组,在拆分新的数组,以长度为元素又组成一个新的数组,算出最大值,根据有长度的那个数组每个元素是否有最大值算出该子字符串。

 0) {				$newstr .= $str [$i];				$e = strlen ( $newstr );				$i = $i + $e - 1;				$oldarray [] = $newstr;			}		}		return $oldarray;	}	/**	 * 筛选出长度最长的子字符串	 *	 * @param String $str        		 * @return Array	 */	private static function maxlenth($str) {		$oldarray = self::strtoarr ( $str);		if(empty($oldarray)){			echo "对不起您没有重复的子字符串";            return false;					}		$lastarray = array ();		$newlenarray = array ();		foreach ( $oldarray as $val ) {			$newarray [] = $val . '@' . strlen ( $val );		}		foreach ( $newarray as $value ) {			$numarr = explode ( '@', $value );			$numar [] = $numarr [1];		}		$maxlength = max ( $numar );				foreach ( $newarray as $valu ) {			$varray = explode ( '@', $valu );			if (array_search ( $maxlength, $varray )) {				$lastarray [] = $varray [0];			}		}		return $lastarray;	}	/**	 * 入口文件	 *	 * @param String $str        		 * @return Array	 */	public static function main($str) {		$newstr = self::maxlenth ( $str );		return $newstr;	}}$str = "aaaeeeeebbbbcd";$newstr = maxstr::main ( $str );print_r ( $newstr );


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。