---
# System prepended metadata

title: 'leetcode #5：14- Longest Common Prefix'
tags: [python, leetcode]

---

# leetcode #5：14- Longest Common Prefix

給一些字串（list），找出前緣最大公共字串

字串數、各自字母數不超過200，字母都是小寫

空白或沒有公共字串就輸出""

## 思考

先字少排到字多，答案一定包含在字最少的字裡面（索引0的字），用這個字跟其他後面的字比較，如果有不一樣的話，就輸出到不一樣之前的字串；如果都涵蓋的話就輸出這個索引0的字，如果全空就輸出““，如果只有一個字就輸入這個字

*list的索引是字串、字串的索引是某個英文字


```
class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        
        if strs == []:
            return ""
        
        if len(strs) == 1:
            return strs[0]
        
        strs = sorted(strs, key=len)
        a= strs[0]
        l= len(a)

        for i in range(l):
            for k in strs:
                if k[i] != a[i]:
                    return a[0:i]
        
        return a
```

## 檢討與複習

1. AC之前有兩次錯誤，第一次沒有注意到全空白的情況，第二次沒有注意到如果索引0沒有因為比較而減少，索引0就是答案

2. list的索引是字串、字串的索引是某個英文字

3. sort/sorted 排序
　list名稱.sort() ：將此list排序並更新（只能用在list）
　新名稱 = sorted(原名稱)：將list（或其他資料）排序，以新名稱輸出
 
　括號裡面可以寫reverse = False(預設)/ True 代表是否反序
　key = 排列依據（預設：字串依照字典ACSII碼；數字依照大小）
　其他key例如 key = len（依照字串長度）
　key = lambda 任意新變數:任意新變數[k] 可以將裡面每個元素的第k個字來比較
 
　若要sort index 例如a=[2,3,1,4,9]
  b = sorted(range(len(s)), key= lambda k:a[k])
  sort [0,1,2,3,4] 依照a的情況
  
  
###### tags: `python` `leetcode`