题目
给定一个单词,你需要判断单词的大写使用是否正确。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如"USA"。
单词中所有字母都不是大写,比如"leetcode"。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google”。
否则,我们定义这个单词没有正确使用大写字母。
示例
输入: “USA”
输出: True
输入: “FlaG”
输出: False
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/detect-capital
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
方法1
1、先判断首字母是大写or小写
2、遍历数组,存大写的个数和小写的个数
3、比较判断~
Python实现
class Solution:
def detectCapitalUse(self, word: str) -> bool:
n=len(word)
flag,flag1,flag2=0,0,0
for i in range(n):
if word[0]>='A' and word[0]<='Z': #首字母大写
flag=1
if word[i]>='A' and word[i]<='Z':
flag1+=1
else:
flag2+=1
if (flag==1 and flag1==n) or (flag==1 and flag2==n-1) or (flag==0 and flag2==n):
return True
else:
return False
Java实现
class Solution {
public boolean detectCapitalUse(String word) {
int n = word.length();
int up = 0, low = 0, flag = -1;
for(int i = 0; i < n; i++){
char c = word.charAt(i);
if (c >= 'A' && c <='Z') {
up++;
flag = i;
}
else if (c >= 'a' && c <= 'z') low++;
}
if (up == n || low == n) return true;
else if (up == 1 && flag == 0) return true;
return false;
}
}
方法2
class Solution {
public boolean detectCapitalUse(String word) {
if (word.length() == 1) {
return true;
}
// 如果首字母大写
if (word.charAt(0) >= 'A' && word.charAt(0) <= 'Z') {
if (word.charAt(1) >= 'A' && word.charAt(1) <= 'Z') {
for (int i = 2; i < word.length(); i++) {
// 如果出现小写,报错
if (word.charAt(i) >= 'a' && word.charAt(i) <= 'z') {
return false;
}
}
} else if (word.charAt(1) >= 'a' && word.charAt(1) <= 'z') {
for (int i = 2; i < word.length(); i++) {
// 如果出现大写,报错
if (word.charAt(i) >= 'A' && word.charAt(i) <= 'Z') {
return false;
}
}
}
} else {
// 如果首字母小写
for (int i = 1; i < word.length(); i++) {
// 如果出现大写,报错
if (word.charAt(i) >= 'A' && word.charAt(i) <= 'Z') {
return false;
}
}
}
return true;
}
}