求两个字符串的第⼆⻓公共单词&PHP

前端之家收集整理的这篇文章主要介绍了求两个字符串的第⼆⻓公共单词&PHP前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

求两个字符串的第⼆⻓公共单词

题目描述:

        求出字符串 s 与字符串 t 的第⼆⻓公共单词(这⾥,假设两个字符串均由英⽂字⺟和空格字符组成);若找到这样的公共单词,函数返回该单词,否则,函数返回NULL,如果有多个满⾜要求,则返回第⼀个单词。

        例如:若 s=“This is C programming text”,t=“This is a text for C programming”,则函数返回“This”。

实现思路:

        1. 字符串变数组

        2. 去重(省去多余时间)

        3. 排序,按单词长度降序排序(可以省略)

        4. 返回出字符串最长的前两个

代码实现:

function getSecondWord($s,$t)

{

// 字符串不为空

if (empty($s)) return null;

if (empty($t)) return null;

// 1. 字符串变数组

$arr1 = explode(' ',$s);

$arr2 = explode(' ',$t);

// 至少两个单词

if (count($arr1) < 2) return null;

if (count($arr2) < 2) return null;

// 2. 去重,省去多余时间

$arr1 = array_unique($arr1);

$arr2 = array_unique($arr2);

// 3. 排序,按单词长度降序排序

usort($arr1,'compare');

usort($arr2,'compare');

// 相同返回第二个

if ($arr1 == $arr2) return $arr1[1];

// 4. 返回出字符串最长的前两个

$arr = [];

foreach ($arr1 as $k => $v) {

foreach ($arr2 as $kk => $vv) {

if ($v == $vv) {

$arr[] = $v;

}

}

}

if (count($arr) > 1) {

return $arr[1];

} else {

return null;

}

}

// 比较函数

function compare($a,$b)

{

if (strlen($a) == strlen($b)) {

return 0;

}

return (strlen($a) < strlen($b)) ? 1 : -1;

}

函数调用

$s = 'This is a text for C programming';

$t = 'This is C programming text';

$second_word = getSecondWord($s,$t);

echo '第⼆⻓公共单词为:',$second_word;

输出结果:

This

最后总结:

        文章中主要用了 usort 和 array_unique 函数,以及比较函数compare。如有问题,欢迎指正!

千而の大狮子!

ps:个人博客:www.qianern.cn,欢迎点击!

猜你在找的PHP相关文章