用二分查找求字符串数组最长公共前缀
时间: 2023-06-19 09:08:16 浏览: 169
可以用二分查找来求解字符串数组中的最长公共前缀。具体思路如下:
1. 先找到字符串数组中长度最短的字符串,这个字符串的长度就是最长公共前缀的上限。
2. 用二分查找的方式,不断缩小最长公共前缀的上限,直到找到最长公共前缀为止。
具体实现可以参考以下代码:
```python
def longestCommonPrefix(strs):
if not strs:
return ""
min_len = min(map(len, strs))
left, right = 0, min_len
while left < right:
mid = (left + right + 1) // 2
prefix = strs[0][:mid]
if all(s.startswith(prefix) for s in strs):
left = mid
else:
right = mid - 1
return strs[0][:left]
```
其中,`left` 和 `right` 分别表示最长公共前缀的下限和上限,初始化为 0 和最短字符串的长度。在二分查找的过程中,取中间位置 `mid`,并判断字符串数组中是否所有字符串都以长度为 `mid` 的前缀开头。如果是,说明最长公共前缀的长度可以增加,将 `left` 更新为 `mid`;否则,最长公共前缀的长度需要缩小,将 `right` 更新为 `mid - 1`。最后返回第一个字符串的前 `left` 个字符即可。
阅读全文