PHP计算查找多个字符串最长公共前缀

  • 发表于
  • PHP

查找两个字符串的最大相同部分

最长公共前缀(Longest-Common-Prefix)

题干如下:

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
  输入: ["flower","flow","flight"]
  输出: "fl"
示例 2:
  输入: ["dog","racecar","car"]
  输出: ""
解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z 。
来源:力扣

解题思路

首先我们从题干入手,求字符串数组的公共前缀,那么什么是公共前缀呢?其实就是所有字符串都有的子串,并且这个子串的位置还比较特殊,它在字符串的开始位置

有了这个认知之后,我们随意取两个字符串 S1 和 S2,先得出 S1 和 S2 的公共前缀,记为 P1。如果没有公共前缀,那么直接返回空字符串,如果存在 P1,那么将 P1 和 S3 比较,得出公共前缀 P2,以此类推。( P1的长度一定是大于等于 P2 )。

至于如何求公共前缀 P,流程图如下:

PHP计算查找多个字符串最长公共前缀

查找多个字符串的公共前缀

在多个、数组字符串中查找最长公共子串

方法二

查找2个字符串的最长公共前缀子串