每週刷個 leetcode 演算法題
我們們每週至少來刷個 LeetCode 演算法題,提高自己的程式設計思維。刷 LeetCode 可以根據自身實際情況選擇難度適中的題目,沒有受過專業訓練的同學建議從一些簡單的題開始做,這樣一開始不至於打擊你的熱情。
題目:
實現一個演算法,將字串轉換成小寫形式。 地址:https://leetcode.com/problems/to-lower-case/
方法一
看到這個題的時候,不知道你的思路是什麼樣的,如果你熟悉 Python 裡面的API,最先想到的可能就是直接使用 str.lower() 方法就可以實現。實際開發中可以這麼做,不過,這道題的考察目的肯定不是這個。
def to_lower_case(text):
return text.lower()
方法二
你可能聯想到了字元的 ASCII 碼值,26個英文字母在 ASCII 中分別對應一個值,大寫的A~Z對應 ASCII 值65~90,小寫的a~z是97~122,而且它們都是連續的,同一個字母大小寫值相差 32,所以如果某個字母在65~90區間,那麼將其加 32 就是對應的小寫字母。這裡,ascii碼值與字母之間的互相轉換需要用到兩個函式 ord 和 chr
>>> ord('a')
97
>>> chr(97)
'a'
def to_lower_case(text):
new_text = ""
for c in text:
if 65 <= ord(c) <= 90:
c = chr(ord(c) + 32)
new_text += c
return new_text
方法三
第三種思路是這樣,如果你思考一下,26個字母大小寫都是一一對應的,每個大小字母都對應有一個小寫字母,這時你就可以遍歷每個字元判斷它是不是某個大寫字元,是的話,就找到對應的小寫字母就ok了。
類似這樣:
if c == 'A'
return 'a'
elif c == 'B'
return 'b'
elif
...
但是這樣寫,你要寫26個if條件,而更優雅的方式是使用字典來替代這種方式。 {“A”: “a”, “B”: ‘b’, ….}
def to_lower_case(s):
upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
lower = 'abcdefghijklmnopqrstuvwxyz'
d = dict(zip(upper, lower))
return "".join([d.get(i, i) for i in s])
關注這個公眾號的
最後都學會了程式設計
相關文章
- Go每週刷題第四周Go
- leetcode排序專題演算法刷題LeetCode排序演算法
- LeetCode刷題整理LeetCode
- leetcode刷題(一)LeetCode
- LeetCode刷題 堆LeetCode
- LeetCode 刷題—樹LeetCode
- leetcode刷題記錄:演算法(三)滑動視窗演算法LeetCode演算法
- vscode的LeetCode演算法刷題外掛VSCodeLeetCode演算法
- leetcode刷題記錄:演算法(六)BFS&DFSLeetCode演算法
- LeetCode 刷題指南(一):為什麼要刷題LeetCode
- LeetCode 刷題筆記LeetCode筆記
- leetcode刷題筆記LeetCode筆記
- LeetCode刷題記錄LeetCode
- 如何使用leetcode刷題LeetCode
- leetcode刷題--Majority ElementLeetCode
- leetcode刷題--Count PrimesLeetCode
- leetcode刷題--Reverse BitsLeetCode
- leetcode刷題--Rotate ArrayLeetCode
- leetcode刷題--Count and SayLeetCode
- Leetcode刷題分類LeetCode
- Leetcode刷題準備LeetCode
- LeetCode刷題—陣列LeetCode陣列
- 演算法刷題:LeetCode中常見的動態規劃題目演算法LeetCode動態規劃
- Leetcode刷題——求眾數LeetCode
- leetcode刷題筆記605LeetCode筆記
- Leetcode刷題系列彙總LeetCode
- leetcode刷題--Happy NumberLeetCodeAPP
- leetcode刷題--Number of 1 BitsLeetCode
- leetcode刷題記錄 661~LeetCode
- 每週精選+原創題
- LeetCode 演算法題系列(第一週 25道)LeetCode演算法
- LeetCode刷題之第701題LeetCode
- Leetcode刷題628. 三個數的最大乘積LeetCode
- LeetCode通關:連刷十四題,回溯演算法完全攻略LeetCode演算法
- Leetcode已刷題目題解彙總LeetCode
- 用Rust刷leetcode第十題RustLeetCode
- 用Rust刷leetcode第八題RustLeetCode
- 用Rust刷leetcode第九題RustLeetCode