最长公共前缀

题目描述:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

实例:

输入:strs = ["flower","flow","flight"]
输出:"fl"

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

思路:

最简单的是从前往后遍历字符串当前列,比较相同列上的字符是否相同,如果相同则继续进行比较,如果不相同则说明当前不再属于公共前缀,当前遍历过部分为最长公共前缀。也可以直接匹配对比

实现:

package main

import (
	"fmt"
	"strings"
)

func main() {

	strs := []string{"flower", "flow", "flight"}
	fmt.Println(longestCommonPrefix(strs))  //fl
}

func longestCommonPrefix(strs []string) string {
	if len(strs) < 1 {
		return ""
	}
	prefix := strs[0] //选择一个基准元素
	for _, v := range strs {
		for strings.Index(v, prefix) != 0 {
			if len(prefix) == 0 { //没有公共前缀
				return ""
			}
			prefix = prefix[:len(prefix)-1] //没有匹配  减短再次搜索
		}
	}
	return prefix
}

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部