Files
2021-11-19 10:33:14 +08:00

63 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [14. Longest Common Prefix](https://leetcode-cn.com/problems/longest-common-prefix/)
## 题目
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".
**Example 1**:
Input: strs = ["flower","flow","flight"]
Output: "fl"
**Example 2**:
Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
**Constraints:**
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] consists of only lower-case English letters.
## 题目大意
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
## 解题思路
- 对strs按照字符串长度进行升序排序求出strs中长度最小字符串的长度minLen
- 逐个比较长度最小字符串与其它字符串中的字符如果不相等就返回commonPrefix,否则就把该字符加入commonPrefix
## 代码
```go
package leetcode
import "sort"
func longestCommonPrefix(strs []string) string {
sort.Slice(strs, func(i, j int) bool {
return len(strs[i]) <= len(strs[j])
})
minLen := len(strs[0])
if minLen == 0 {
return ""
}
var commonPrefix []byte
for i := 0; i < minLen; i++ {
for j := 1; j < len(strs); j++ {
if strs[j][i] != strs[0][i] {
return string(commonPrefix)
}
}
commonPrefix = append(commonPrefix, strs[0][i])
}
return string(commonPrefix)
}
```