前言
题目:我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false
一、示例
二、思路与代码
1.思路
返回true的情况有三种:
①全部为大写
②全部为小写
③只有首字母为大写,其余为小写
返回false的情况是:
从第二字母开始,如果后面有任意一个大写字母,则返回false
2.代码
代码如下(示例):
//难点是如何判断大写
bool detectCapitalUse(char * word){
if(word == NULL) {
return false;
}
int i = 0, j, sum = 0, first_flag = 0;
int len = strlen(word);
char star = 'A';
//全部字母大写,只有首字母是大写,则返回true
for(i = 0; i < len; i++) {
star = 'A';
for(j = 0; j < 26; j++) {
if(word[i] == star) {
if(0 == i) { //如果首字母是大写
first_flag = 1;
}
sum++;
break;
}
star++;
}
}
if(sum == len ) { //如果全部字母大写
return true;
} else if((1 == first_flag && 1 == sum)) { //如果首字母为大写
return true;
} else if(0 == sum) { //如果全部为小写
return true;
}
//从第二字母开始,如果后面有任意一个大写字母,则返回false
return false;
}
结果如图所示: