Re: [闲聊] 每日LeetCode

楼主: AyuniD (アユニ.D)   2023-01-02 13:59:59
※ 引述《Rushia (みけねこ的鼻屎)》之铭言:
: 520. Detect Capital
: 给你一个字串,判断他是否符合下列情况:
: (1)全部字母都大写
: (2)全部字母都小写
: (3)首字大写其他字母小写
: 若符合就返回true,否则返回false,测资只会输入大写和小写字母。
思考:
因为这题不会有空格,所以只需要考虑一个字的情况。
按照题目所说,大写字母只会有 0 个、1 个或全部都是。
所以我就从数数着手了。
程式码:
class Solution:
def detectCapitalUse(self, word: str) -> bool:
return len((l := [(i, ch) for i, ch in enumerate(word) \
if ch.isupper()])) in [0, 1, len(word)] \
and (l[0][0] == 0 if l else True)
(为了阅读方便才换行的)
附注:
因为在一个大写字母的情况下要考虑到它是不是在字首,
所以我用 enumerate 去遍历而不是直接对 word 本身做,
这样我就可以在后面去看大写字符的 index。
后面的三元运算子是要确保有 l 这个 list 存在,
因为没有大写字母的话会是空的,这时候我们就用 True 代替。
作者: pandix (面包屌)   2023-01-02 14:22:00
大师return word[1:] == word[1:].lower() or word.isupper()讨论区看到的 这也好强==

Links booklink

Contact Us: admin [ a t ] ucptt.com