leetcode每日一題-520:檢測大寫字母
鏈接
檢測大寫字母
題目

分析
模擬分析題,遍歷一下字串統計一下其中的大小寫字母然后根據大小寫字母的數量判斷即可
代碼
C++
class Solution {
public:
bool detectCapitalUse(string word) {
int n = word.size();
// 統計大寫,小寫字母的數量
int big = 0, little = 0;
for(int i=0 ; i<n ; i++)
{
// 這里使用if-else if是為了避免其他字符的干擾
if(word[i] >= 'a' and word[i] <= 'z') little++;
else if(word[i] >= 'A' and word[i] <= 'Z') big++;
}#
// 如果字串都是大寫or小寫字母,顯然符合 return 1
if(big == n or little == n) return 1;
// 如果大小寫的數量之和等于字串總數,并且只有一個大寫字母,且這個大寫字母是第一個字符,那么return 1
if((big + little == n) and big == 1 and word[0] >= 'A' and word[0] <= 'Z') return 1;
// 不符合上述情況的就不合法,return 0即可
return 0;
}
};
Java
class Solution {
public boolean detectCapitalUse(String word) {
// 若第 1 個字母為小寫,則需額外判斷第 2 個字母是否為小寫
if (word.length() >= 2 && Character.isLowerCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1))) {
return false;
}
// 無論第 1 個字母是否大寫,其他字母必須與第 2 個字母的大小寫相同
for (int i = 2; i < word.length(); ++i) {
if (Character.isLowerCase(word.charAt(i)) ^ Character.isLowerCase(word.charAt(1))) {
return false;
}
}
return true;
}
}
作者:LeetCode-Solution
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/356915.html
標籤:其他
