1. 程式人生 > >【LeetCode】520. 檢測大寫字母

【LeetCode】520. 檢測大寫字母

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; }