Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述
- 我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如
"USA"。 - 单词中所有字母都不是大写,比如
"leetcode"。 - 如果单词不只含有一个字母,只有首字母大写, 比如
"Google"。
- 全部字母都是大写,比如
- 给你一个字符串
word。如果大写用法正确,返回true;否则,返回false。 - 示例 1:
- 输入: word = "USA"
- 输出: true
- 示例 2:
- 输入: word = "FlaG"
- 输出: false
- 提示
1 <= word.length <= 100word由小写和大写英文字母组成
二、思路分析:
- 首先满足返回
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
};
四、总结:
- 总的来说,这题还是比较简单的,正则不会写百度一下就可以啦,然后后面两个正则套一下前面那个就行
- 更多解题方式,移步题解区