使用纵向扫描的方法完成:
首先判断字符串数组是否为空,若为空,直接返回空串。
若非空,则从首列开始,依次遍历每一列,比较相同列中,不同行的字母是否相同。若相同则继续判断下一行,若不相同则直接利用erase语句擦除第一行的字串中,此列之后(包括此列)的所有字符。最后返回字符串数组中第一行子串(此时第一行子串即为最长公共前缀)。
代码实现(c++):
class Solution
{
public:
string longestCommonPrefix(vector<string>& strs)
{
if(strs.size()==0) return "";
for(int j=0;j<strs[0].length();j++)
for(int i=0;i<strs.size();i++)
if(strs[0][j]!=strs[i][j])
strs[0]=strs[0].erase(j);
return strs[0];
}
};