前言
今天又到了愉快的周末,刷完这道题就可以放假啦!
一、问题
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:"fl"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、算法思路
首先看到这个题目的时候我们可以知道这是一个关于字符串与数组的问题,我们需要访问该数组以及数组中的字符内容,这个时候我们可以通过访问数组的方式来进行获取字符内容。
在获取到字符内容后,我们可以从题目中看出,最长公共前缀的要求是每一个字符都必须包含该字符串,因此我们可以先取第一个字符串中的全部内容当做最长公共前缀,再依次取出其余字符串与它对比,对公共字符串部分进行截取,就可以获得最长公共前缀。
代码如下:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string preword= strs[0]; //取初始字符串
if(strs.size()==0)
{
return "";
}
for(int i=1 ; i<strs.size() ; ++i)//取数组中的每一个字符串
{
int index=0;
while(index <min(preword.size(),strs[i].size()) && preword[index]==strs[i][index]) //这里要特别注意,index是与字符串中的字符个数建立联系的重要环节,只有字符相同的字符串才可以让index加1,如果不相同则截取前面已经相同的部分
{
++index;
}
preword=preword.substr(0,index) ;
if(preword.size()==0)
{
break;
}
}
return preword;
}
};
总结
今天的题目也有很多的其他的解决方法,希望可以跟大家多多讨论!