目录
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
题解思路
遍历字符串数组,每次都让当前字符串与当前的最大公共字符串比较,然后切除字串,保留公共部分,最后返回。
代码实现
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//最长公共字符串初始化
string ans=strs[0];
//从第二个字符串开始遍历
for(int i=1;i<strs.size();++i){
int j=0;
//获取当前字符串
string s=strs[i];
while(j<s.size() && j<ans.size()&&s[j]==ans[j]){
++j; //有公共部分则继续往后比较
}
//没有公共前缀
if(j==0){
return "";
}
//获取公共前缀字串
ans=ans.substr(0,j);
}
return ans;
}
};
总结感悟
注意循环简化,代码简化,c++有获取字串的函数substr(i,j)。