Golang实现字符串倒序的几种解决方案

 更新时间:2017年10月10日 09:32:47   作者:小立立  
给定一个字符串,按单词将该字符串逆序是我们大家在开发中可能会遇到的一个需求,所以下面这篇文章主要给大家介绍了关于Golang如何实现字符串倒序的几种解决方案,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

前言

本文主要给大家介绍了关于Golang实现字符串倒序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍:

字符串倒置如下:

Hello World --> dlroW olleH

解决方案1:

  length := len(str)
  array := make([]string , length)
  for i , v := range str{
   array[i] = string(v)
  }
  for i := 0 ; i < length/2 ; i++ {
   array[i], array[length -i - 1] = array[length - i -1 ], array[i]
  }
  str = ""
  for _ , v := range array {
   str += v
  }

大致想法是: 

      str -循环-> array -循环-> 倒置 --循环--> str

可以转换中文.

问题:

     看上去比较繁琐, 而且使用3层循环, 效率肯定不高,

解决方案2

 bytes := []rune(str)
 for from , to := 0 , len(bytes) -1 ; from < to ; from , to = from + 1, to -1{
  bytes[from] , bytes[to] = bytes[to] , bytes[from]
 }
 str = string(bytes)
 return str

使用一层循环, 倒置之后 直接使用 go 内置的 string 函数将 []byte 转换为string

大致思路: 

    string --直接使用构建数组的方法, 将str 传入进去, 得到 array --> []byte ---for 循环---> 倒置 ---内置的 string 函数--> string

问题: 

     不能转换 byte 类型

解决方案3 :

 bytes := []rune(str)
 for from , to := 0 , len(bytes) -1 ; from < to ; from , to = from + 1, to -1{
  bytes[from] , bytes[to] = bytes[to] , bytes[from]
 }
 str = string(bytes)
 return str 

解决方案2不能转换中文字符的问题:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

参考:

string rune byte 的关系

相关文章

  • go语言beego框架web开发语法笔记示例

    go语言beego框架web开发语法笔记示例

    这篇文章主要为大家介绍了go语言beego框架web开发语法笔记示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • go for range遍历二维数组的示例

    go for range遍历二维数组的示例

    今天小编就为大家分享一篇关于go for range遍历二维数组的示例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • 详解Golang利用反射reflect动态调用方法

    详解Golang利用反射reflect动态调用方法

    这篇文章主要介绍了详解Golang利用反射reflect动态调用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • Golang实现Redis事务深入探究

    Golang实现Redis事务深入探究

    这篇文章主要介绍了Golang实现Redis事务深入探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 基于Go和PHP语言实现爬楼梯算法的思路详解

    基于Go和PHP语言实现爬楼梯算法的思路详解

    这篇文章主要介绍了Go和PHP 实现爬楼梯算法,本文通过动态规划和斐波那契数列两种解决思路给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Go语言学习之操作MYSQL实现CRUD

    Go语言学习之操作MYSQL实现CRUD

    Go官方提供了database包,database包下有sql/driver。该包用来定义操作数据库的接口,这保证了无论使用哪种数据库,操作方式都是相同的。本文就来和大家聊聊Go语言如何操作MYSQL实现CRUD,希望对大家有所帮助
    2023-02-02
  • golang中snappy的使用场合实例详解

    golang中snappy的使用场合实例详解

    在java 和go语言 大字符传达的时候, 采用snappy 压缩 解压缩是最好的方案。下面这篇文章主要给大家介绍了关于golang中snappy使用场合的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • 深入理解Go语言中的数组和切片

    深入理解Go语言中的数组和切片

    Go语言中的数组大概相当与C/C++中的数组,固定大小,不能够动态扩展大小,而切片大概相当与C++中的Vector,可以动态扩展大小,当大小超过容量时,重新分配一块内存,然后将数据复制到新的内存区域。下面我们通过几个问题来更好理解golang 的数组和切片,一起来看看吧。
    2016-09-09
  • golang如何替换换行符

    golang如何替换换行符

    这篇文章主要介绍了golang如何替换换行符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • golang创建文件目录os.Mkdir,os.MkdirAll的区别说明

    golang创建文件目录os.Mkdir,os.MkdirAll的区别说明

    本文主要讲述os.Mkdir、os.MkdirAll区别以及在创建文件目录过程中的一些其他技巧,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论