520_檢測大寫字母_2021.11.13
阿新 • • 發佈:2021-11-13
我們定義,在以下情況時,單詞的大寫用法是正確的:
全部字母都是大寫,比如 "USA" 。
單詞中所有字母都不是大寫,比如 "leetcode" 。
如果單詞不只含有一個字母,只有首字母大寫,比如"Google" 。
給你一個字串 word 。如果大寫用法正確,返回 true ;否則,返回 false 。
又變成室友的形狀了,本來自己思考的話可以跟著官方的思路走的,以下是室友形狀式的程式碼:
(特別指出,學習了C++整體字串轉大小寫的方法,但是還是感覺挺麻煩的,不如其他語言方便)
class Solution { public: bool detectCapitalUse(stringword) { string lowStr(word.length(),' '); string upperStr(word.length(), ' '); transform(word.begin(), word.end(), lowStr.begin(), ::tolower); transform(word.begin(), word.end(), upperStr.begin(), ::toupper); if (word == upperStr || word == lowStr)return true; lowStr[0] -= 32; if (word == lowStr) return true; return false; } };
題解答案:
class Solution { public: bool detectCapitalUse(string word) { // 若第 1 個字母為小寫,則需額外判斷第 2 個字母是否為小寫 if (word.size() >= 2 && islower(word[0]) && isupper(word[1])) { return false; } // 無論第 1 個字母是否大寫,其他字母必須與第 2 個字母的大小寫相同 for (int i = 2; i < word.size(); ++i) { if (islower(word[i]) ^ islower(word[1])) { return false; } } return true; } };