• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-24) 13次浏览 已收录 0个评论

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

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

<?phpheader ( "content-type:text/html;charset=utf-8" );/** * 给一个字符串计算出长度最长的子字符串 * * @author lxy *         */class maxstr {	private function __construct() {	}	/**	 * 筛选出有连续重复的子字符串	 *	 * @param String $str        		 * @return Array	 */	private static function strtoarr($str) {		$nwearray = array ();		$oldarray=array(); 		$newstr = "";		for($i = 0; $i < strlen ( $str ) - 1; $i ++) {			$newstr = "";			for($j = $i + 1; $j  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 = explo
……本2文来源gaodai.ma#com搞##代!^码@网3
搞代gaodaima码de ( '@', $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 );


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 算出延续重复的子字符串
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址