题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
实例:
输入:strs = ["flower","flow","flight"] 输出:"fl" 输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]仅由小写英文字母组成
思路:
最简单的是从前往后遍历字符串当前列,比较相同列上的字符是否相同,如果相同则继续进行比较,如果不相同则说明当前不再属于公共前缀,当前遍历过部分为最长公共前缀。也可以直接匹配对比
实现:
package main
import (
"fmt"
"strings"
)
func main() {
strs := []string{"flower", "flow", "flight"}
fmt.Println(longestCommonPrefix(strs)) //fl
}
func longestCommonPrefix(strs []string) string {
if len(strs) < 1 {
return ""
}
prefix := strs[0] //选择一个基准元素
for _, v := range strs {
for strings.Index(v, prefix) != 0 {
if len(prefix) == 0 { //没有公共前缀
return ""
}
prefix = prefix[:len(prefix)-1] //没有匹配 减短再次搜索
}
}
return prefix
}