# 520 检测大写字母

# 题目

给定一个单词,你需要判断单词的大写使用是否正确。

我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。 否则,我们定义这个单词没有正确使用大写字母。

示例 1:

输入: "USA"
输出: True

示例 2:

输入: "FlaG"
输出: False

注意: 输入是由大写和小写拉丁字母组成的非空单词。

# 题解

  1. 使用字符串的方法来进行转换比较。

TIP

执行用时:112 ms, 在所有 JavaScript 提交中击败了 9.01% 的用户
内存消耗:39.3 MB, 在所有 JavaScript 提交中击败了 29.37% 的用户
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    // 如果全为大写或者全为小写,则返回 true
    if(word === word.toLowerCase() || word === word.toUpperCase()) return true

    // 判断首字母大写和其余字母小写是否与换字符串相等
    return word[0].toUpperCase().concat(word.slice(1).toLowerCase()) === word
};
  • 时间复杂度: `O(1)`,直接对比,没有进行遍历操作
  • 空间复杂度: `O(1)`,没有创建任何变量
  • 最好情况: 全部为小写或者大小,则直接返回 true
  • 最坏情况: 首字母为大写
  1. 使用正则表达式来进行判断

TIP

执行用时:88 ms, 在所有 JavaScript 提交中击败了 62.21% 的用户
内存消耗:39.9 MB, 在所有 JavaScript 提交中击败了 5.59% 的用户
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    let {length: l} = word
    // 判断大写的正则
    let regBig = new RegExp(`[A-Z]{${l}}`, 'g')
    // 判断小写的正则
    let regSml = new RegExp(`[a-z]{${l}}`, 'g')
     
    if(regBig.test(word)) return true
    if(regSml.test(word)) return true

    // 判断首字母大写其余小写的正则
    let str = new RegExp(`[A-Z]{1}[a-z]{${l-1}}`, 'g')
    return str.test(word)
};
  • 时间复杂度: `O(1)`,直接对比,没有进行遍历操作
  • 空间复杂度: `O(1)`,创建几个常数级别的空间
  • 最好情况: 全部为小写或者大小,则直接返回 true
  • 最坏情况: 首字母为大写
最后更新时间: 9/14/2020, 10:51:54 PM