↓快轉到主要內容
  1. LeetCode/

LeetCode 709: To Lower Case

·1 分鐘· ·
LeetCode Easy String
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-31

  • 提交紀錄:Internal Error → Runtime Error ×3 → Accepted ×2

解題思路
#

'A' 到 'Z' 是 65 到 90,小寫剛好多 32。逐字元檢查是不是大寫,是的話 chr(ord(c) + 32)(String 模板四)。實務上就是 s.lower()。

我的嘗試
#

前三版在條件裡寫成 ord(s)(整個字串),長度超過 1 就 TypeError,其中兩版還少了右括號。第四版改成 ord(int(i)),字母轉 int 直接 ValueError。改回 ord(i) 就 AC 了。

正確解法
#

class Solution:
    def toLowerCase(self, s: str) -> str:
        return "".join(chr(ord(c) + 32) if "A" <= c <= "Z" else c for c in s)

複雜度
#

時間 O(n),空間 O(n)。

要特別避免的錯誤
#

  • ord 要對單一字元用,不是整個字串。

面試口說整理
#

大寫字母的 ASCII 加 32 就是對應的小寫,我逐字元檢查是不是 A 到 Z,是的話轉換,其他字元不變。時間 O(n)。

相關文章

LeetCode 680: Valid Palindrome II
·1 分鐘
LeetCode Easy Two-Pointers String Greedy
LeetCode 680 解題筆記:左右指針遇到第一對不同時,只有兩種刪法:刪左邊或刪右邊,檢查剩下的是否為回文
LeetCode 696: Count Binary Substrings
·1 分鐘
LeetCode Easy Two-Pointers String
LeetCode 696 解題筆記:把字串切成連續相同字元的段,相鄰兩段可以組出 min(前一段, 這一段) 個子字串
LeetCode 599: Minimum Index Sum of Two Lists
·1 分鐘
LeetCode Easy Array Hash-Table String
LeetCode 599 解題筆記:把 list1 的字串對應到 index,掃 list2 時算兩邊 index 的和,留下和最小的全部字串
LeetCode 551: Student Attendance Record I
·1 分鐘
LeetCode Easy String
LeetCode 551 解題筆記:A 少於 2 次,而且字串裡沒有 LLL
LeetCode 504: Base 7
·1 分鐘
LeetCode Easy Math String
LeetCode 504 解題筆記:對絕對值不斷取 % 7 和 // 7,最後加上負號並反轉;0 要特別處理
LeetCode 541: Reverse String II
·1 分鐘
LeetCode Easy Two-Pointers String
LeetCode 541 解題筆記:每 2k 個為一段,反轉每段的前 k 個;最後一段不足 k 個時全部反轉,切片會自動處理