zoukankan      html  css  js  c++  java
  • GO 字符串反转

    字符串反转

    即 abc 反转后成 cba

    思路:两边都设置一个游标,然后互换位置,游标同步向中间移动,再互换。

    for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
    	s[i], s[j] = s[j], s[i]
    }
    

    用byte会乱码

    func main() {
    	src2 := "你好aaa李焕英"
    	dst2 := reverse([]byte(src2))
    	fmt.Printf("%v
    ", string(dst2))
    }
    
    func reverse(s []byte) []byte {
    	for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
    		s[i], s[j] = s[j], s[i]
    	}
    	return s
    }
    

    因为byte是 uint8 遇到中文会有截断。

    换成 rune 完美解决

    结论

    func main() {
    	src := "你好aaa李焕英"
    	dst := reverse([]rune(src))
    	fmt.Printf("%v
    ", string(dst))
    }
    
    func reverse(s []rune) []rune {
    	for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
    		s[i], s[j] = s[j], s[i]
    	}
    	return s
    }
    
  • 相关阅读:
    愤怒的小鸟(angry bird )
    1101模拟
    1029模拟题解
    1028题解
    图床
    数据结构
    博弈论
    差分
    前缀和
    快读和快写
  • 原文地址:https://www.cnblogs.com/HappyTeemo/p/14467295.html
Copyright © 2011-2022 走看看