刷题笔记day08-字符串01
- 软件开发
- 2025-08-15 02:36:02

344. 反转字符串
思路1:使用双指针的方法,前后交换
func reverseString(s []byte) { // 思路1:使用双指针进行交换 // 思路2:使用库函数进行交换 for i, j := 0, len(s) - 1; i < j; { s[i], s[j] = s[j], s[i] i++ j-- } }思路2:使用库文件,进行翻转。目的是为了熟悉库,方便后面工作用。
class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ s.reverse() 541. 反转字符串 II设置好边界条件,然后调用上一题写的双指针交换的函数既可搞定。
func reverseStr(s string, k int) string { // 双指针法 s2 := []byte(s) start := 0 length := len(s) for start < length { if (start + k >= length) { reverse(s2, start, length - 1) } else { reverse(s2, start, start + k - 1) } start += 2*k } return string(s2) } func reverse(s []byte, start, end int) { for i, j := start, end; i < j; { s[i], s[j] = s[j], s[i] i++ j-- } } LCR 122. 路径加密 func replaceSpace(s string) string { // 使用双指针的方法 by := []byte(s) spaceCount := 0 for i := 0; i < len(s); i++ { if s[i] == ' ' { spaceCount++ } } // 为什么是*2,而不是*3,因为原先的空格也占一个空格。 tmp := make([]byte, spaceCount*2) by = append(by, tmp...) // 用...展开切片 // b是原切片的指针,e是扩容后的指针。从后往前扫,不断的赋值 for b, e := len(s)-1, len(by)-1; e > b; { if (by[b] == ' ') { by[e] = '0' by[e-1] = '2' by[e-2] = '%' e -= 2 } else { by[e] = by[b] } b-- e-- } return string(by) }刷题笔记day08-字符串01由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“刷题笔记day08-字符串01”