题目要求
整体思路
选取字符串数组中第一个字符串作为基准,将其与后面的字符串按照字符依次比对。
当出现字符不相同时,记录不相同字符的index,将其更新为字符比较的上限。跳过当前字符串并继续比较下一个字符串,直至比较完所有的字符串。
最终得到一个最短上限,该最短上限就是公共子串的长度。
代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
return "";
unsigned longestCommon = strs[0].size();
//i代表字符串编号、j代表字符串中的字符编号
for (size_t i = 1; i < strs.size(); i++)
{
for (size_t j = 0; j <= longestCommon; j++)
{
if (strs[0][j] != strs[i][j])
{
longestCommon = j;
break;
}
}
}
return strs[0].substr(0, longestCommon);
}
};
学到了什么
1、字符串注意空串的情况,而容器要注意容器为空的情况。(踩了一次坑,一开始vector为空没有考虑进来)