reverse反转,是个比较基础算法。要实现这个方法,从常理考虑可以申请一个新空间,然后将字符串的从尾到头依次填充该空间,最后新空间的内容就是反转后的结果了,这个方式的算法复杂度是O(n),并且还需要重新申请空间。

然而通过对字符串前后对调实现的,方法非常优雅,复杂度一下就降到了O(n/2)。用golang语言模拟如下:

package main

import (
"fmt"
) func main() {
s := "hello,golang语言"
fmt.Println(reverseString(s))
fmt.Println(reverseString(reverseString(s)))
// output: 言语gnalog,olleh
// output: hello,golang语言
} // 反转字符串
func reverseString(s string) string {
runes := []rune(s)
for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
runes[from], runes[to] = runes[to], runes[from]
}
return string(runes)

golang这边需要先将字符串string转换成rune类型,而后才能进行对调操作.

最新文章

  1. IE 6 全球分布图 - 中国一枝独秀
  2. BZOJ 4619 Swap Space 解题报告
  3. reverse-daily(1)-audio_visual_receiver_code
  4. 怎样用JS获取ASP.NET服务器控件的客户端ID
  5. 强大的修改数据库修改语句ALTER TABLE(一)[20160712]
  6. UVA 540 stl
  7. C++学习笔记10-面向对象
  8. 关于学习springboot和springcloud的很不错的教程
  9. 三、Java多人博客系统-技术架构
  10. LOJ2980 THUSC2017大魔法师(线段树+矩阵乘法)
  11. thinkphp5 composer
  12. Mysql主从同步(复制)(转)
  13. 创建gitlab ssh 密钥
  14. HDU 3591 (完全背包+二进制优化的多重背包)
  15. MySQL的连接方式
  16. 【Java】编程技术经典书籍列表
  17. FPGA与CPLD的概念及其区别
  18. 在Kotlin上怎样用Mockito2 mock final 类(KAD 23)
  19. flask - 1
  20. loj2035 「SDOI2016」征途

热门文章

  1. OpenCV安装和测试
  2. 【ES6 】ES6 解构赋值--对象解构赋值
  3. 对数据库ID进行散裂化计算
  4. ActiveMQ入门系列二:入门代码实例(点对点模式)
  5. 【Git】二、文件的提交与查看
  6. 转载-对于Python中@property的理解和使用
  7. 交换机配置-----monitor session
  8. dropbear源码编译安装及AIDE软件监控
  9. Linux目录结构以及一些常见操作
  10. sql 分页查询 (每次6行 )