【LeetCode】520. 檢測大寫字母
阿新 • • 發佈:2018-11-03
1.題目
給定一個單詞,你需要判斷單詞的大寫使用是否正確。
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫, 比如 “Google”。
否則,我們定義這個單詞沒有正確使用大寫字母。
2.思路
考慮三種情況;
遍歷字串,記錄小寫字母的數量,和最後一個大寫字母的下標;
如果小寫字母數量=0,情況一;
如果小寫字母數量=字串長度,情況二;
此外,下標=0,情況三
3.程式碼
class Solution {
public:
bool detectCapitalUse (string word) {
int c=0,index;
for(int i=0;i<word.length();i++){
if(word[i]<65||word[i]>96){
c++;
}
else
index=i;
}
if(c==word.length()||c==0)
return true;
else if(index==0)
return true;
else return false ;
}
};
4.優秀案例
思路一致,程式碼更加精簡
class Solution {
public:
bool detectCapitalUse(string word) {
int num_length = word.length();
int num_count = 0;
for(int i=0;i<num_length;i++){
if(word[i]>='A' && word[i]<='Z')
num_count++ ;
}
if(num_count==0)
return true;
if(num_count == num_length)
return true;
if(word[0]>='A' &&word[0]<='Z' && num_count==1)
return true;
return false;
}