zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    环境变量的配置
    java语言概述
    快捷键,功能键及常用的DOS命令
    html介绍
    Java web学习框架
    线程的使用
    Task类(任务)
    Parallel类(简化Task 操作)
    文件及数据流技术
    泛型的使用
  • 原文地址:https://www.cnblogs.com/lpgit/p/13527482.html
Copyright © 2011-2022 走看看