PHP之找任意两个字符串的最大相同部分
2015-04-08 22:29
246 查看
<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");?>
相关文章推荐
- 字符串练习3,取两个字符串中最大相同的字串
- 字符串数组 string[] 转换为 字符串(用逗号,作为分隔符),linq Except的用法,linq获取两个字符串数组相同的部分
- 获取两个字符串中最大的相同子串
- 求解两个字符串中最大长度的相同连续字符串
- 黑马程序员——求两个字符串的最大相同字串
- php中比较两个数组内容,相同部分保留,不同的加上
- 两个字符串中最大相同的子串
- 两个字符串中最大相同子串
- java/C++取两个字符串的最大相同子串
- 黑马程序员—取两个字符串中最大相同子串
- 获取两个字符串中最大相同子串
- 功能:查找两个字符串有没有相同的部分
- 阿里巴巴2014.08.29校园招聘笔试题---找出两个字符串中连续相同的最大子串
- 比较两个字符串的大小,并显示最大的字符串,如果两个字符串相同则显示第一个
- 截取两个字符串之间不同的部分 sql脚本(可以延伸到进一步判断两字符串之间的相同部分)
- java获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印
- 输出两字符串最大相同部分——C面试题
- 两个字符串中最大相同的子串
- [C#]C#如何求出两个字符串最大的公共部分