问题描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
解题思路
前两个字符串找公共子串,将其结果和第三个字符串找公共子串……直到最后一个串。
代码
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string result;
if (strs.size()==0)
return result;
result = strs[0];
for(int i=1;i<strs.size();++i)
{
for(int j=0;j<result.length();++j)
{
if(result[j]!=strs[i][j])
{
result.erase(j);
exit;
}
}
}
return result;
}
};
反思
对于c++中string类有了更深的理解,string类并不像char*一样,将中间的某一位设为’\0’就被视为结束。string类的size赋值后需要erase函数来释放。