入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

PHP之找任意两个字符串的最大相同部分

创建时间:2015-04-08 投稿人: 浏览次数:136
<p style="TEXT-INDENT: 2em">【题目背景】本题的题面是:<strong>输出任意两个字符串的最大相同部分。</strong>比如:字符串abcdsss和字符串sdcdsrf的最大相同部分是cds。 </p><p style="TEXT-INDENT: 2em">【题目解法】穷尽法 </p>
<?php
/**
 * 找两个字符串相同的部分
 **/
function main($str1, $str2) {
	//将字符串转成数组
	$arr1 = str_split($str1);
	$arr2 = str_split($str2);
	//计算字符串的长度
	$len1 = strlen($str1);
	$len2 = strlen($str2);
	//初始化相同字符串的长度
	$len = 0;
	//初始化相同字符串的起始位置
	$pos = -1;
	for ($i = 0; $i < $len1; $i++) {
		for ($j = 0; $j < $len2; $j++) {
			//找到首个相同的字符
			if ($arr1[$i] == $arr2[$j]) {
				//判断后面的字符是否相同
				for ($p = 0; (($i + $p) < $len1) && 
					(($j + $p) < $len2) && 
					($arr1[$i + $p] == $arr2[$j + $p]) && 
					($arr1[$i + $p] <> ""); $p++);
				if ($p > $len) {
					$pos = $i;
					$len = $p;
				}
			}
		}
	} 
	if ($pos == -1) {
		return ;
	} else {
		return substr($str1, $pos, $len);
	}
}
echo main("abcdsss", "sdcdsrf");
?>

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。