---
# System prepended metadata

title: Leetcode 14 Array & string longest common prefix
tags: [string, array, LeetCode]

---

# Leetcode 14 Array & string longest common prefix

My Solution  O(strs[0]字串長 * 總字串數)
---
```
def longestCommonPrefix(self, strs:[str]):
    # 概念為將每個單字拆開如果 
    string 的 index 第一個字元對得起來即往下一個字元比對 
    ans =""
    length = len(strs)
    # 1.以strs[0]中的string 字元當作主key 去訪問strs 的每個string
    # 2.每一次皆要比對strs中的每個string 1~length-1
    # 3.用j當作計算相同次數 如果符合條件即放入ans
    if not strs:
        return ""
    for index in range(len(strs[0])):
        j = 0
        char = strs[0][index] # 查詢字元
        for string_index in range(1,length):
            if index < len(strs[string_index]):
                if char == strs[string_index][index]:
                    j+=1
        if j == length-1: # 代表符合條件
            ans+=char
        else:     # 提早跳出
            break
    return ans
```
Best Solution  O(單一字串長 * 總字串數)
---
    def longestCommonPrefix(self, strs: 'List[str]') -> 'str':
        # 排序最大和排序最小在某個index字元相同時，
        即代表著中間其他字串在此index字元亦相同

        if not strs: return ""
        s1 = min(strs)
        s2 = max(strs)
        print(s1)
        print(s2)
        
        for i, c in enumerate(s1):
            if c != s2[i]:
                return s1[:i]
        return s1
###### tags: `LeetCode` `string` `array`
