提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
LEETCODE14.最长公共前缀(easy)
题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
一、纵向比较
将数组中的元素每一位逐一比较,如果相同就继续进行,如果出现不同就返回当前结果。
代码如下:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0)
{
return "";
}
int length=strs[0].size();//横向范围
int size=strs.size();//纵向深度
string result=strs[0];
for(int i=0;i<length;i++)
{
char temp=strs[0][i];
for(int j=1;j<size;j++)
{
if(strs[j][i]!=temp||strs[j].size()==i)//如果这一位不相等或者已经超出strs[j]的长度,就返回结果
{
result=strs[0].substr(0,i);
return result;
}
}
}
return result;
}
};
二、活用string函数的简洁代码
代码如下:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string res = strs.empty() ? "" : strs[0];
for (string s : strs)
while (s.find(res) != 0) res = res.substr(0, res.length() - 1);//如果遍历到的字符串的头部不是res,就剪短一位res,重新开始遍历
return res;
}
};
作者:OrangeMan
链接:https://leetcode-cn.com/problems/longest-common-prefix/solution/cdai-ma-by-orange-32-4/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
总结
这道题目不难,但是要考虑多种特殊情况,包括数组为空,越界,以及单字母字符串。通过这道题目要养成思考问题的全面性。同时也要学会活用函数工具,也许会极大简化问题。