最长公共前缀
2020-06-15 本文已影响0人
yellowone
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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()
}