代码
首先对字符串容器做排序处理,然后取出首尾两个字符串的最长公共前缀
//查找两个字符串的最长公共前缀
string CommonTwoStr(const string& str1, const string& str2)
{
int i = 0;
int minSize = min(str1.size(), str2.size());
while (str1[i] == str2[i] && i < minSize)
{
++i;
}
return str1.substr(0, i);
}
string longestCommonPrefix(vector<string>& strs) {
if (strs.empty())
return "";
else if (strs.size() == 1)
return strs[0];
sort(strs.begin(), strs.end()); //对容器排序
string result = CommonTwoStr(strs[0], strs[strs.size() - 1]);
return result;
}
测试用例
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。