题目描述:给定两个字符串,找出两个字符串中,公共的最长且连续的子字符串。
eg:qca.dba.mdysql.mgr-01.hz 和 qa.dba.mysql.mgr-00.hz 两个字符串
其最长连续公共子串为:ysql.mgr-0
参考解决代码:
func findMaxCommonSequence(aStr, bStr string) string {
if strings.Contains(aStr, bStr) {
return bStr
}
if strings.Contains(bStr, aStr) {
return aStr
}
maxS := 0
maxIdx := 0
if len(aStr) > len(bStr) {
for i := 0; i < len(bStr); i ++ {
j := 0
for idx := 0; maxIdx + j < len(aStr) && i + idx < len(bStr); {
if bStr[i + idx] == aStr[j + idx] {
idx ++
if idx > maxIdx {
maxIdx = idx
maxS = i
}
} else {
j ++
idx = 0
}
}
}
return bStr[maxS:maxS+maxIdx]
} else {
for i := 0; i < len(aStr); i ++ {
j := 0
for idx := 0; maxIdx + j < len(bStr) && i + idx < len(aStr); {
if aStr[i + idx] == bStr[j + idx] {
idx ++
if idx > maxIdx {
maxIdx = idx
maxS = i
}
} else {
j ++
idx = 0
}
}
}
return aStr[maxS:maxS+maxIdx]
}
}