Skip to content
On this page

520-检测大写字母

标签:字符串

题目信息

题目地址520. 检测大写字母

题目内容:

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

全部字母都是大写,比如"USA"
单词中所有字母都不是大写,比如"leetcode"
如果单词不只含有一个字母,只有首字母大写,比如"Google"
给你一个字符串word。如果大写用法正确,返回true;否则,返回false 。

示例 1
    输入:word = "USA"
    输出:true

示例 2
    输入:word = "FlaG"
    输出:false

提示:
    1 <= word.length <= 100
    word由小写和大写英文字母组成

题解

解法一

思路:

使用正则表达式实现

代码实现:

javascript
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    return /^(([A-Z]+)|([a-z]+)|([A-Z]{1}[a-z]+))$/.test(word)
};

解法二

思路:

遍历字符串,获取大写字母的索引和个数,根据题目描述,符合下面条件中的一个就返回true

1、大写字母的个数等于字符串长度,也就是字母全部大写

2、大写字母的个数为0,大写字母的索引为设置的初始值,也就是字母全部小写

3、大写字母的个数为1,并且大写字母的索引为0,也就是首字母大写

TIP

  • 每个字符(包括字母)在计算机中都有一个对应的ASCII码值
  • 大写字母ASCII码值范围是65到90(包括65和90)
  • 小写字母ASCII码值范围是97到122(包括97和122)
javascript
// 判断字母是否是大写字母
function isLetterUppercase(letter) {
  const ascii = letter.charCodeAt(0);
  return ascii >= 65 && ascii <= 90;
}

// 判断字母是否是小写字母
function isLetterLowercase(letter) {
  const ascii = letter.charCodeAt(0);
  return ascii >= 97 && ascii <= 122;
}

代码实现:

javascript
/**
 * @param {string} word
 * @return {boolean}
 */
var detectCapitalUse = function(word) {
    // 判断字母是大写字母
    function isLetterUppercase(letter) {
        const ascii = letter.charCodeAt(0);
        return ascii >= 65 && ascii <= 90;
    }
    const len = word.length
    let upperStrCount = 0, upperSreIndex = -1
    for(let i = 0; i < len; i++) {
        if(isLetterUppercase(word[i])) {
            upperStrCount++
            upperSreIndex = i
        }
    }
    return upperStrCount === len || (upperStrCount === 0 && upperSreIndex === -1) || (upperStrCount === 1 && upperSreIndex === 0)
};