golang 如何翻转含有中文 数字 英文字母等任意字符串

问题描述

翻转含有 中文、数字、英文字母 等任意字符串

示例

输入:"he師l發lo,世。+-*界,6"
输出:"6,界*-+。世,ol發l師eh"

Golang 实现

package main

import "fmt"

func reverseString(s string) string {
	// 将字符串转换为 rune 类型的切片,并对该切片翻转
	res := reverse([]int32(s))
	// 再把 rune 类型的切片转为 string
	return string(res)
}

func reverse(s []int32) []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
}

func main() {
	s := "he師l發lo,世。+-*界,6"
	res := reverseString(s)
	fmt.Println(res)
}

rune 关键字是 int32 的别名,比 byte 可以表示更多的字符,可以处理一切字符。

因此,将字符串转为 rune 的切片,再进行翻转,即可解决。

当然,你也可以写 []int32

在 go 的源码中:

type byte = uint8

type rune = int32

李培冠博客

欢迎访问我的个人网站:

李培冠博客:lpgit.com

posted @ 2020-08-19 09:40  李培冠  阅读(11702)  评论(0编辑  收藏  举报