go语言刷题:14. 最长公共前缀
程序员文章站
2024-03-23 10:40:22
...
申明:本文只用做自己学习记录
题目
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 “”
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
代码
func longestCommonPrefix(strs []string) string {
//定义边界条件1:当字符串列表长度为0的时候,表示无字符串,返回空字符
if len(strs) == 0 {
return ""
}
//定义边界条件2:当字符串列表长度为1时,重复字符串就是该字符本身
if len(strs) == 1 {
return strs[0]
}
//取出字符串列表中的第一个元素,作为对照字符串
firststring := strs[0]
//创建变量,用来存储最小字符串的长度
var resultlength = 0
//进行字符串列表循环,遍历字符串列表中的字符串
for i := 1; i < len(strs); i++ {
//对比两个字符串的长度,取较小的长度为对比循环次数
if len(firststring) <= len(strs[i]) {
resultlength = len(firststring)
} else if len(firststring) > len(strs[i]) {
resultlength = len(strs[i])
}
//初始化字符串重复个数
j := 0
//进行字符串对比
for j < resultlength {
//如果存在相同序号下字符串不相等,则跳出本次循环,j不加1
if firststring[j] != strs[i][j] {
break
}
//如果上述if不符合,说明该位置字符重复,j加1表示重复字符串个数多一位
j++
}
//每对比一次字符串,保留当前的前j个重复的字符串
//注:当本次循环的j小于上次循环的j时,重复字符串会截取最小值的字符串
firststring = firststring[:j]
//如果任意两个字符串之间的重复字符个数为零
//则所有字符串之间的字符重复个数也为0,则返回空字符,函数结束
if len(firststring) == 0 {
return ""
}
}
//循环结束,说明存在重复字符,返回重复的字符
return firststring
}
上一篇: Erron错误对照表