Longest Common Prefix
题意
给一个字符串数组strs,求其中所有字符串的最长公共前缀
解法
这道题目题目本身提供了四种解法。
- 先求出第一个字符串和第二个字符串的最长公共前缀str,然后将str逐一与后面的字符串进行比较,在比较的过程中不断修整(减小)str的长度,最终比较出最长公共前缀。这个方法称为 水平扫描法。时间复杂度为O(S),S为所有字符串的长度总和
- 按列进行比较,看到哪一列无法匹配了,那么我们就停止往后匹配,然后前一列能够匹配到的就是最长的匹配前缀。这个方法称为 垂直扫描法。时间复杂度为O(n*minLen),n为字符串的数量,minLen为最短的字符串长度。
- 这个方法是将字符串数组进行递归二分,左一半右一半,递归边界为左右指针指向同一个字符串,然后将一左一右进行匹配,得到的最长公共前缀继续与其他字符串进行匹配,直到全部都比较完。
- 这与第3个方法有一些相似,然而这二分的是字符串的长度,每次二分出的区域结果用来对所有字符串进行截取比较,看是否是一个最长公共前缀的子串,如果是的话,那么就将二分区域变大,继续寻找,否则将该区间变短。
代码
解法1:
|
|
解法2
|
|
解法3
|
|
解法4
|
|