读题心路历程:这道题其实读完题大致思路就有了,感觉可以让 i 变成一个移动的指针,遍历strs中的第一个字符串,然后看后边的字符每个与 i 对应的位置是否和和第一个字符串中的相同。然后发生不同时,就可以在strs[0]中找到遍历了几个字符,return就行。
具体代码:
string longestCommonPrefix(vector<string>& strs) {
if (strs.size()==0)
{
return "";
}
for (int i = 0; i < strs[0].size(); i++)
{
char judge = strs[0][i];//定义一个用于判断的字符串
for (int j = 1; j < strs.size(); j++)
{
if (strs[j][i]!=judge || i == strs[j].size())//这里是判断如果这个strs[j]这个字符串是最短的,就是i遍历的时候,strs[j]这个字符串已经遍历到头了。
{
return strs[0].substr(0, i);
}
}
}
return strs[0];
}