100%
这题属于一类的二分查找问题,类似于最小值最大化,对于查找的区间,我们可以通过二分查找算法收敛于最优解
复杂度O(n2logn)
func longestCommonPrefix(strs []string) string {
temp := 0x3f3f3f3f
if len(strs) == 0 {
return ""
}
for _,j := range strs {
lens := len(j)
if lens < temp {
temp = lens
}
}
l := 0
r := temp
var mid int
for l<=r {
mid = (l+r)/2
if check(mid,strs)==true{
l=mid+1
}else{
r=mid-1
}
}
return strs[0][0:(l+r)/2]
}
func check(mid int,strs []string) bool{
for _,value := range strs {
for j:=0;j<mid;j++ {
if value[j] != strs[0][j] {
return false;
}
}
}
return true
}