编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。提示:
1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]仅由小写英文字母组成
思路:
时间复杂度:O(mn),其中 m 是字符串数组中的字符串的平均长度,n 是字符串的数量。最坏情况下,字符串数组中的每个字符串的每个字符都会被比较一次。
空间复杂度:O(1)
- func longestCommonPrefix(strs []string) string {
- // 公共前缀比所有字符串都短,随便选一个先,比如第一个元素
- var prefix string = strs[0]
-
- for _, str := range strs {
- for strings.HasPrefix(str, prefix) == false {
- if len(prefix) == 0 {
- return ""
- }
-
- // 公共前缀不匹配就让它变短!(因为需要最长前缀,所以从后向前不断缩短被比较的prefix)
- prefix = prefix[:len(prefix)-1]
- }
- }
-
- return prefix
- }