golang实现反向输出字符串

写了3个方案和对应的性能测试

方案1

func reverseString(s string) string {
	arr := []byte(s)
	l := len(arr)
	for k, _ := range arr {
		if k == l/2 {
			break
		}
		arr[k], arr[l-1-k] = arr[l-1-k], arr[k]
	}
	return string(arr)
}

方案2

func reverseStrings(s string) string {
	str := ""
	arr := []byte(s)
	l := len(arr)
	for i := l - 1; i >= 0; i-- {
		str += string(arr[i])
	}
	return str
}

方案3

func reverseString3(s string) string {
	str := ""
	arr := []byte(s)
	for _, v := range arr {
		str = string(v) + str
	}
	return str
}

测试结果:

Benchmark_reverseString-4     20000000     63.2 ns/op   32 B/op    1 allocs/op
Benchmark_reverseStrings-4     1000000     1632 ns/op     608 B/op    29 allocs/op
Benchmark_reverseString3-4 1000000 1856 ns/op 608 B/op 29 allocs/op

多次执行代码后,方案2,3差别不大。

1 评论

  1. for i := l - 1; i >= 0; i-- {
    这一行没法看啊,这个L-1,太容易 看成 1-1了。。。哈哈,不会go只会一点python

发表评论

电子邮件地址不会被公开。 必填项已用*标注