如何创建一串字母字符串,以便第一个字符串是" a",第26个是" z",第27个是" aa" .. ..eg:
a
b
c
d
...
...
...
x
y
z
aa
ab
ac
ad
...
...
...
ax
ay
az
aaa
aab
aac
...
...
...
aax
aay
aaz
aaaa
aaab
...
...
I have the following playground code,但是27号是" za" (s / b" aa")。我希望最终能够使用该模式创建一个无限长的字符串。
答案 0 :(得分:0)
我没有使用你的代码,而是重新编写了一个更简单的算法来做到这一点; https://play.golang.org/p/Iv6X8-SXY3
package main
import "fmt"
func main() {
letters := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}
prefix := "a"
for i := 0; i < 5; i++ {
for i, _ := range letters {
letters = append(letters, prefix+letters[i%26])
}
prefix += "a"
}
for j, _ := range letters {
fmt.Println(letters[j])
}
}
你也可以扩展这个,所以有一个变体前缀来获得像ba,bc,bd,bba等的东西。要做到这一点,您需要更改外部循环以使用字母中的现有项目,而不是静态计算仅由“a”组成的前缀。要增加字符串的长度,只需在外循环上使i
更大。你也可以将它包装在一个函数中并使它成为一个参数。最后,如果性能是一个问题,我建议你的切片具有较大的初始容量,因为这是自由使用append会导致很多或realloc的。