持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第18天,点击查看活动详情
一、题目描述:
我们定义,在以下情况时,单词的大写用法是正确的:
- 全部字母都是大写,比如 "USA" 。
- 单词中所有字母都不是大写,比如 "leetcode" 。
- 如果单词不只含有一个字母,只有首字母大写, 比如 "Google" 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
示例 1:
输入:word = "USA"
输出:true
示例 2:
输入:word = "FlaG"
输出:false
提示:
- 1 <= word.length <= 100
- word 由小写和大写英文字母组成
二、思路分析:
- 使用ASCII码来进行判断
- 先循环遍历除第一个元素后面的所有元素
- 然后记录大小写的状态
- 最后遍历完之后判断第一个元素的是否为大小写字母 如果是大写 大写状态或者小写状态有一个是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)