Write a function to find the longest common prefix string amongst an array of strings.
本文以逐次比较的方法找出最大公共序列
class Solution
{
public:
string longestCommonPrefix(vector<string> &strs)
{
int nStrsNum = strs.size(),nStrLen;
string strComPre = "", strCom;
if (nStrsNum == 1)//判断是否只有一个序列
return strs[0];
if (nStrsNum == 0)//判断是否没有序列
return strComPre;
strCom = strs[0];//将第一个序列赋给最大公共序列
for (int nTemp = 0; nTemp < nStrsNum - 1; nTemp++)
{
nStrLen = strCom.length() < strs[nTemp + 1].length() ? strCom.length() : strs[nTemp + 1].length();//比较当前最大公共序列和当前序列的长度,并取其较小值
if (nStrLen == 0)//如果长度为0则返回空序列
return "";
for (int nIndex = 0; nIndex < nStrLen; nIndex++)//找出当前最大公共序列和当前序列的最大公共序列
{
if (strCom[nIndex] == strs[nTemp + 1][nIndex])
{
strComPre += strCom[nIndex];
}
else
{
break;
}
}
strCom = strComPre;
strComPre = "";
}
return strCom;
}
};