算法 | 字符串所有组合
1. 简介
通过递归交换位置,找到所有可能的的结果。
如果需要对结果去重可以使用类似Set数据结构保存结果数据。
2. 演示
func main() {
list := []string{"a", "b", "c"}
combination(list, 0)
}
func combination(strs []string, index int) {
if index == len(strs)-1 {
fmt.Println(strings.Join(strs, ""))
return
}
for i := index; i < len(strs); i++ {
strs[index], strs[i] = strs[i], strs[index]
combination(strs, index+1)
strs[index], strs[i] = strs[index], strs[i]
}
}
Output
abc
acb
bac
bca
cba
cab