题目
题目来源
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
思路
依然是参考的大佬思路,按照字典序排列之后直接看首尾两个的最长公共前缀即可,将比较多个字符串的问题通过排序简化为了比较两个字符串的问题。
相关思考
1.关于“&”引用的作用,暂不明白,不添加引用同样能够通过用例,且消耗时间和内存不变
2.str.front()指的是第一个字符串,str.back()指的是最后一个字符串
3.尝试用return string(s1,0,i)替换string(s1.begin(),s1.begin()+i),发现执行时间变长,内存消耗不变
代码(C++/力扣)
class Solution {
public:
string longestCommonPrefix(vector<string>& str) {
sort(str.begin(),str.end());
string &s1=str.front();
string &s2=str.back();
int i=0;
while(i<s1.size()&&i<s2.size()&&s1[i]==s2[i]){
++i;
}
return string(s1.begin(),s1.begin()+i);
}
};