# 520 检测大写字母
# 题目
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。 单词中所有字母都不是大写,比如"leetcode"。 如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。 否则,我们定义这个单词没有正确使用大写字母。
示例 1:
输入: "USA"
输出: True
示例 2:
输入: "FlaG"
输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。
# 题解
- 使用字符串的方法来进行转换比较。
TIP
执行用时:112 ms, 在所有 JavaScript 提交中击败了 9.01% 的用户
内存消耗:39.3 MB, 在所有 JavaScript 提交中击败了 29.37% 的用户
内存消耗: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
- 最坏情况: 首字母为大写
- 使用正则表达式来进行判断
TIP
执行用时:88 ms, 在所有 JavaScript 提交中击败了 62.21% 的用户
内存消耗:39.9 MB, 在所有 JavaScript 提交中击败了 5.59% 的用户
内存消耗: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
- 最坏情况: 首字母为大写
← 495 提莫攻击 541 反转字符串 II →