14. 最长公共前缀
14. 最长公共前缀
第一版
import (
"math"
)
func longestCommonPrefix(strs []string) string {
ret := []byte{}
minLen := math.MaxInt
for _, s := range strs {
minLen = min(minLen, len(s))
}
for i := 0; i < minLen; i++ {
for j := range strs {
if j == 0 {
continue
}
if strs[j][i] != strs[0][i] {
return string(ret)
}
}
ret = append(ret, strs[0][i])
}
return string(ret)
}
- 可以将长度判断放到循环里面去做
- 直接遍历第一个元素就行了,如果遇到不相等的,直接返回prefix,遇到相等的就继续,最多也就是第一个元素这么长
第二版
func longestCommonPrefix(strs []string) string {
for j, b := range []byte(strs[0]) {
for _, s := range strs {
if j == len(s) || s[j] != b {
return strs[0][:j]
}
}
}
return strs[0]
}
参考了一下灵神的答案,优雅
贴个灵神答案的链接: 简单题,简单做(Python/Java/C++/C/Go/JS/Rust)
希望我以后做题也是这么举重若轻
本站总访问量次 本站访客数人次 本文总阅读量次