字符串类的变化比较多变化也比较多,这里针对go语言特点结合字符串算法题做个总结。主要包括在解字符串类型题目时候go语言中经常使用到的一些知识点、字符串题型汇总、解题技巧。字符串可以看作是一个数组,因此在解字符串类型题目时候也复习下数组相关知识。
go语言字符串知识点
假设有以下字符串:
var s = "abcdefg"
1. 对字符串遍历,我一般用下面这种写法,减少变量命名而且直观。
for i := range s {
fmt.Println(s[i]) // s[i]是byte类型
}
2. go语言里交换两个变量可以这样写,是不是很简洁。当然这个只是个语法糖,底层代码肯定引入了第三个变量。
s[i], s[j] = s[j], s[i]
344. 反转字符串
解题思路:
- 双指针-对撞指针,一个从头部开始一个从尾部开始,两个依次递减交换
- 结束条件是i < j
func reverseString(s []byte) {
for i, j := 0, len(s) - 1; i < j; j-- {
s[i], s[j] = s[j], s[i]
i++
}
}