检测大写字母

279 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述

  • 我们定义,在以下情况时,单词的大写用法是正确的:
    • 全部字母都是大写,比如 "USA" 。
    • 单词中所有字母都不是大写,比如 "leetcode" 。
    • 如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
  • 给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
  • 示例 1:
    • 输入: word = "USA"
    • 输出: true
  • 示例 2:
    • 输入: word = "FlaG"
    • 输出: false
  • 提示
    • 1 <= word.length <= 100
    • word 由小写和大写英文字母组成

二、思路分析:

  • 首先满足返回true的有三种情况
    • 字符串全部大写
    • 字符串全部小写
    • 大写字母开头,其余全部小写
  • 第一种方法:正则匹配,匹配上面三种情况,匹配成功,返回true,匹配失败就返回false
  • 第二种,正则不会写,可以用字符的ASCII码,大写字母范围[A-Z] [65-90],小写字母范围[a-z] [97-122],然后把字符串转化为单个字符的数组形式,遍历数组,判断每个字符的ASCII值,看是大写字母还是小写字母

三、AC 代码:

  • 这里的第二种方式有些繁琐,感兴趣的话可以自己写下,这里就粘贴代码了
function detectCapitalUse(word: string): boolean {
    let reg1 = new RegExp(/^[A-Z]+$/);
    let reg2 = new RegExp(/^[a-z]+$/);
    let reg3 = new RegExp(/^[A-Z][a-z]+$/);
    if(reg1.test(word) || reg2.test(word) || reg3.test(word)){
        return true
    }
    return false
};

四、总结:

  • 总的来说,这题还是比较简单的,正则不会写百度一下就可以啦,然后后面两个正则套一下前面那个就行
  • 更多解题方式,移步题解区

image.png