---
# System prepended metadata

title: 14. Longest Common Prefix
tags: [JavaScript, Easy, Grind 75, important, Array/String]

---

思考:
1.vector<sting>的排序是依照字典排序 比較前幾位字元 如果都相同是比較長度
2.只需要比較排序後的第一個字串和最後一個字串就好
3.如果有不相同的要直接break迴圈，不然會一直掃到有相同的

```C++=
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        sort(strs.begin(), strs.end());
        //字串的排序是依照字典排序法，先比較每個字元相同 如果都一樣是依照長度進行排序
        //直接比較第一個和最後一個字串就好 沒必要比較全部
        string n = strs[0];
        // 拿到string的最後一個字串
        string m = strs.back(); 
        string ans = "";
        for (int i = 0; i < n.size(); i++) {
            if (n[i] == m[i]) {
                ans += n[i];
            }else{
                //如果不直接break會比較到以後的字元相同又push進ans;
                break;
            }
        }
        return ans;
    }
};


```
                                     
```c++=
class Solution {
private:
    string ans = "";
public:
    string longestCommonPrefix(vector<string>& strs) {
        sort(strs.begin(), strs.end());
        string n = strs[0];
        string m = strs[strs.size()-1];
        
        for(int i = 0; i < n.size(); i++){
            if(n[i] == m[i]){
                ans = ans + n[i];
            }else{
                break;
            }
        }
        return ans;
    }
};
```                                    
                                    
                                    
```=
                                    /**
 * @param {string[]} strs
 * @return {string}
 */
var longestCommonPrefix = function(strs) {
    for (let i = 0; i < strs[0].length; i++) {
        if (!strs.every((string) => {
            return string[i] === strs[0][i];
        })) {
            return strs[0].slice(0, i);
        }
    }
    console.log(strs[0]);
    return strs[0];
};

```