1. 程式人生 > 其它 >LeetCode 520——檢測大寫字母

LeetCode 520——檢測大寫字母

技術標籤:LeetCode刷題

一、題目介紹

給定一個單詞,你需要判斷單詞的大寫使用是否正確。

我們定義,在以下情況時,單詞的大寫用法是正確的:

全部字母都是大寫,比如"USA"。
單詞中所有字母都不是大寫,比如"leetcode"。
如果單詞不只含有一個字母,只有首字母大寫,比如"Google"。
否則,我們定義這個單詞沒有正確使用大寫字母。

示例 1:

輸入: "USA"
輸出: True
示例 2:

輸入: "FlaG"
輸出: False
注意: 輸入是由大寫和小寫拉丁字母組成的非空單詞。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/detect-capital
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

二、解題思路

本題只需按照題目要求,判斷三種正確情況即可。本文通過記錄首字母是否大寫和大寫字母的個數,完成三種情況的判斷。詳見程式碼。

三、解題程式碼

class Solution {
public:
    bool detectCapitalUse(string word) {
        //首先判斷首字母是否大寫:(1)如果第一個字母是大寫,後面全是小寫正確;(2)如果全是大寫正確
        //其次如果首字母是否小寫:(1)如果是小寫,後面都是小寫才正確
        int n = word.size();
        int flag = 0; //記錄首字元是否為大寫
        int count = 0; //記錄大寫字母的個數
        for(int i = 0; i < n; ++i)
        {
            if(word[i] >= 'A' && word[i] <= 'Z')
            {
                count++;
                if(i == 0)
                    flag = 1;
            }
        }

        //如果首字母大寫,且大寫字母的個數為1或者n
        if(flag == 1 && (count == 1 || count == n))
            return true;
        else if(flag == 0 && count == 0)
            return true;
        else 
            return false;
    }
};

四、解題結果