【力扣】520. 检测大写字母

226 阅读1分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

原题链接

520. 检测大写字母

题目描述

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

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

全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google"

否则,我们定义这个单词没有正确使用大写字母。

测试用例

示例 1:

输入: "USA"
输出: True

示例 2:

输入: "FlaG"
输出: False

参数限制

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

分析

题目表述非常清晰,判断一个单词是否使用了正确的大写,只需要满足3个要求中的任意一个:

  1. 全小写
  2. 全大些
  3. 在 ① 的基础上,只有首字母是大写

在 js 中,提供了将字符转小写的 str.toLowerCase() 以及转大写的 toUpperCase(),但 请注意,这两个方法都不会修改原始的字符,而是返回一个新的、处理后的字符对象!!

代码

/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
  function setFirstUpCase(str) {
    return str.charAt(0).toUpperCase() + str.substr(1, str.length);
  }
  return word == word.toLowerCase()
    || word == word.toUpperCase() 
    || word == setFirstUpCase(word.toLowerCase());
};

解法 2

也可以使用正则表达式来大力出奇迹

var detectCapitalUse = function(word) {
    const re = /(^[A-Z]*$)|(^[a-z]+$)|(^[A-Z]?[a-z]*$)/;
    return re.test(word);
};

今天的力扣刷题就分享到这里,感谢大家的阅读~