---
# System prepended metadata

title: 找出相同的算法 最長公共前綴
tags: [演算法]

---

# 找出相同的算法 最長公共前綴

https://www.youtube.com/watch?v=gJOgI8TpSgc


## 水平比較

apple  apply ape at
這樣第一根第二筆
app在跟第三個ape比
ap在跟at比
所以是a
但這樣有一個問題
如果第一個跟二相同太多會浪費效率

也會跑多次的for

## 垂直方法
這是一次比較全部的內容
![](https://i.imgur.com/JdW1es0.png)

![](https://i.imgur.com/NEpMiFs.png)

把第一個字跟全部比較
怎麼比較呢
打第一個字
```

var a = function(strs){
   let prefix = '';
   // returen 記得要retunre prefix
   if(strs.length === 0) return prefix
   for(let i=0; i<strs[0].length; i++){
       const currentChar = strs[0][i];
       for(let j=0; j<strs.length; j++){
           // returen 記得要retunre prefix
           if(strs[j][i] !== currentChar) return  prefix         
       }     
       //要prefix + curr 這樣才會app 不然就ppa顛倒了
       //這寫在迴圈外面 這邊做比對 上面for是把不合適的剃掉
       //如果你在上面兩層for加 會變成兩倍
       prefix =   prefix + currentChar
   }
   return prefix;
}

const data =  [
    'apple',
    'apply',
    'appt'
];
const c = a(data);
console.log(c);
```


###### tags: `演算法`