题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
实例:
输入:strs = ["flower","flow","flight"] 输出:"fl" 输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
提示:
1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[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 }