【发布时间】:2021-08-30 04:31:23
【问题描述】:
例如如果 "abacdead" 和 "adcbadedga" 是两个字符串,那么我们需要打印相同的位置和不同的位置。
same pos count: 2
diff pos count: 5
如果我们使用循环的方式,a(第一个字母)会检查所有的字符(字符串2),所以循环会运行140次以上,这里如何实现O(n)。如果我们有任何数据结构,请建议我解决这个问题。
示例代码
func Test(a, b string) {
r := make([]map[string]interface{}, 0)
for i := 0; i < len(a); i++ {
for j := 0; j < len(b); j++ {
if string(a[i]) == string(b[j]) {
r = append(r, map[string]interface{}{
"position": i,
"char": string(a[i]),
})
}
}
}
}
【问题讨论】:
-
这个呢:
a = "xbc", b="xxx"。字符'x'在0有一个匹配位置,但在2和3也有2 个不匹配位置。输出应该是什么?