小知识,大挑战!本文正在参与「程序员必备小知识」创作活动
原题链接
题目描述
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 "Google"。
否则,我们定义这个单词没有正确使用大写字母。
测试用例
示例 1:
输入: "USA"
输出: True
示例 2:
输入: "FlaG"
输出: False
参数限制
注意: 输入是由大写和小写拉丁字母组成的非空单词。
分析
题目表述非常清晰,判断一个单词是否使用了正确的大写,只需要满足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);
};
今天的力扣刷题就分享到这里,感谢大家的阅读~