求两个字符串的第公共单词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,欢迎点击! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
