时间复杂度:O(n²)
解题思路
纵向扫描法。先扫描所有字符串的第一个字符,如果都相同就再次扫描所有字符串的第二个字符,直到某一字符串被扫描完或者出现了不相同的字符,此时就返回该字符串该字符的前缀。
为了确定所有字符是否相同,以第一个字符串的字符为基准进行比较。
AC代码
func longestCommonPrefix(strs []string) string {
for i:=0;i<len(strs[0]);i++{
c:=strs[0][i]
for j:=1;j<len(strs);j++{
if i==len(strs[j])||strs[j][i]!=c{
return strs[j][:i]
}
}
}
return strs[0]
}
感悟
一开始单独声明了res变量作为最长公共前缀,每扫描完一遍就更新res,看了题解后才发现可以直接返回字符串的切片,免去了更新res变量造成的开销。