编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。
思路很简单,一个index去记录比较到了第几位,一位一位比较过去,减少比较次数,用strings.Builder{}弄个缓存区减少字符串的修改耗时。
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Printf("%+v\n",longestCommonPrefix([]string{"dog","racecar","car"}))
}
func longestCommonPrefix(strs []string) string {
if len(strs) <= 0 {
return ""
}
index := 0
result := strings.Builder{}
for {
letter := ""
for _, str := range strs {
if len(str) <= index {
letter = ""
break
}
if len(letter) <= 0 {
letter = str[index : index+1]
continue
}
if str[index:index+1] != letter {
letter = ""
break
}
}
index ++
if len(letter) <= 0 {
break
}
result.WriteString(letter)
}
return result.String()
}