14. 最长公共前缀
这个题目是在多个字符串中寻找最长公共前缀。解体思路有点像冒泡排序的方法,将第一个字符串当成最长前缀串,和第二个字符串判断找出最长前缀串,这个最长前缀串又和第三个字符串判断,找到新的最长前缀串,以此类推,中途如果出现比较不相等的情况,如果是第一个字符不相等,则直接返回“”;否则结束比较,当前找到的前缀即为最长前缀。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
const int len = strs.size();
std::string maxPrefix = "";
if(len > 0)
{
maxPrefix = strs.front();
for(int i = 1; i < len; ++i)
{
const std::string& str = strs[i];
const int strLen = str.size();
const int prefixLen = maxPrefix.size();
const int strMinLen = strLen > prefixLen ? prefixLen : strLen;
std::string prefix;
if(strMinLen > 0)
{
for(int j = 0; j < strMinLen; ++j)
{
if(str[j] == maxPrefix[j])
{
prefix.append(1, str[j]);
}
else
{
if(j == 0)
{
return "";
}
else
{
break;
}
}
}
}
else
{
return "";
}
maxPrefix = std::move(prefix);
}
}
return std::move(maxPrefix);
}
};