LeetCode 检测大写字母

133 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情

一、题目描述:

520. 检测大写字母 - 力扣(LeetCode)

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

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

给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

示例 1:

输入:word = "USA"
输出:true

示例 2:

输入:word = "FlaG"
输出:false

提示:

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

二、思路分析:

  1. 使用ASCII码来进行判断
  2. 先循环遍历除第一个元素后面的所有元素
  3. 然后记录大小写的状态
  4. 最后遍历完之后判断第一个元素的是否为大小写字母 如果是大写 大写状态或者小写状态有一个是false就通过 反之小写 大写的状态必须是false才通过

三、AC 代码:

/**
 * @param {string} word
 * @return {boolean}
 */
 //判断是否为大写大写
function isUp(ascll){
    return ascll>=65 && ascll<=90
}
var detectCapitalUse = function(word) {
    //获取第一个的ASCII码
    let firstAscll=word[0].charCodeAt(),
    i=1,
    //大写的状态
    upper=false,
    //小写的状态
    lower=false,len=word.length-1;
     while(i<=len){
            const ascll = word[i].charCodeAt();
            //如果是大写
            if(isUp(ascll)){
                //把大写的状态改成true
                upper=true
            }else{
                //反之出现的小写 就把小写的状态改成true
                lower=true
            }
            i++;
        }
        //判断第一个单词是否为大写
    if(isUp(firstAscll)){
        //是大写的话  大写和小写的状态必须有一个是false 才符合题解
        return (!upper || !lower)
    }else{
        //反之小写的话 大写的状态必须是false才符合题解
        return !upper
    }
};

范文参考:

看第一个字母是大写还是小写,分情况讨论 - 检测大写字母 - 力扣(LeetCode)

【zljhero】【C语言】检测大写字母:检测后续字母与第二个字母的匹配度 - 检测大写字母 - 力扣(LeetCode)