美文网首页
判断一个字符串中是否包含全部26个字母

判断一个字符串中是否包含全部26个字母

作者: 落叶刺客 | 来源:发表于2017-08-10 14:30 被阅读124次
    问题:给定一个字符串儿,如何判断它里面是否包含全部26个英文字母?

      就以CGTN今天的头版新闻为例,如何判断下面这段字符串儿中是否包含全部的英文字母?

    字符串儿.png

      其实思路很简单,动手数一数就知道了😂!那么,用代码的方式,又该如何去思考呢?给定的字符串儿中很有可能会包含标点符号、字母大小写混合,以及同一个字母出现多次的情况,这些都是我们要考虑的。所以,我们需要做三件事情:1、忽略字母大小写;2、排除重复字母的干扰;3、去掉标点符号。

      对应上面的思路,很容易就知道,首先需要用uppercased()或者lowercased()函数将字符串儿中的字符全部转换成大写字母或者小写字母,然后再用集合Set中元素不可重复这一特性,将重复出现的字符给去掉,最后再利用ASCII码值过滤掉标点符号,如果最后剩下的元素刚好是26个,那么就说明给定的字符串儿中恰好就包含全部26个英文字母。用代码表示如下:

    func challenge(input: String) -> Bool {
        
        // 将左右的字符都转换为大写字母,然后过滤掉重复的字母
        let set = Set(input.uppercased().characters)
        
        // 过滤掉非字母符号
        let letters = set.filter { $0 >= "A" && $0 <= "Z" }
        
        // 如果最后返回元素的个数恰好是26个,就说明字符串儿中包含全部26个英文字母
        return letters.count == 26
    }
    
    let str = "The DPRK is working on plans for a missile strike near the US Pacific territory of Guam, calling President Donald Trump's warning of fire and fury a load of nonsense and that only absolute force can work on him."
    challenge(input: str)  // 运行结果为false
    

      代码最后运行的结果是false,说明给定的字符串儿中不包含全部26个英文字符。为了验证代码是否正确,可以把字符串儿的内容修改为26个英文字母:

    验证程序是否正确.png

    相关文章

      网友评论

          本文标题:判断一个字符串中是否包含全部26个字母

          本文链接:https://www.haomeiwen.com/subject/mkbcrxtx.html