判断一个字符串是否是回文

问题:如何判断一个字符串儿是否是回文?

  所谓的字符串儿回文,就是无论是正序读还是反序读,它都是一毛一样的,比如说字符串儿“rotator”,无论是从左往右读,还是从右往左读,它都是同一个字符串儿。

  思路:因为回文是正着读和反着读是一样的,所以我们马上就想到了reversed()函数。而这个函数的返回值是一个数组,因此最后肯定会用到数组的比较。好在数组属于集合,是值类型,比较起来就容易多了:

func challenge(input: String) -> Bool {
    
    return input.characters.reversed() == Array(input.characters)
}

challenge(input: "rotator")  // 应该返回true
challenge(input: "Hello, world")  // 应该返回false
challenge(input: "Rotator")  // 应该返回true

  上面的代码看起来是符合题目的要求了,但是实际上它还有一个bug,因为字母是分大小写的。如果将本来符合题目要求的字符串儿换成大小写混合的形式,那么它的结果就不符合题目要求:

程序bug.png

  解决这个bug也非常的容易,就是在比较上面这两个数组之前,先将输入的字符串儿统一转换成大写或者小写:

func challenge1(input: String) -> Bool {
    
    // 先将输入的字符串儿转换成大写或者小写
    let lowercase = input.lowercased()
    
    return lowercase.characters.reversed() == Array(lowercase.characters)
}

challenge1(input: "rotator")
challenge1(input: "Hellow, world")
challenge1(input: "Rotator")

  转换完成之后就不会有问题了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,461评论 0 4
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,390评论 0 7
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,698评论 0 13
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,947评论 0 5
  • 我的问题,是不是也是你的问题? 1、开会、听课、听报告,听的时候灵感不断,处处有启发——笔记记了满满一页,结果别人...
    三米三米三米阅读 5,171评论 2 7