代码随想录算法训练营第八天 |344.反转字符串、541. 反转字符串II、LCR 122. 路径加密

代码随想录算法训练营第八天 |344.反转字符串、541. 反转字符串II、LCR 122. 路径加密

344.反转字符串

思路:双指针一个从后一个从前遍历,然后依次调换他们指向的元素。
func reverseString(s []byte)  {l := 0r := len(s) - 1for l < r{tmp := s[l]s[l] = s[r]s[r] = tmpr--l++}
} 

541. 反转字符串II

func reverseStr(s string, k int) string {for index := 0;index < len(s);index++{if index % (2*k) == 0{start := indexend := index + k -1if end > len(s) - 1{end = len(s) - 1}s = reverseString(s,start,end)}}return s
}
// reverseString 反转字符串s中从start到end(包含)的部分,并返回反转后的字符串
func reverseString(s string, start int, end int) string {// 将字符串转换为[]rune以支持Unicode字符(如中文、 emoji等)runes := []rune(s)l, r := start, endfor l < r {// 交换左右指针指向的字符runes[l], runes[r] = runes[r], runes[l]l++r--}// 将[]rune转换回字符串并返回return string(runes)
}

  翻转后k个字符,然后每移动了2k字符翻转一次,小心边界条件

541. 路径加密

扫描。然后换成空格

    func pathEncryption(path string) string {runes := []rune(path)for i,i2 := range runes{if i2 == '.'{runes[i] = ' '}}return string(runes)}