编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
以第一个字符串的长度去作为外层的循环,因为最多公共前缀长度是第一个字符串的长度,接着内部循环一定是strs.size()-1,每两个字符串之间比较,而且是一个字符一个字符的全部比较,如果出现不同的情况,就用substr截取当前的字符串,得出结果。
#include<iostream>
#include<vector>
#include<stack>
#include<sstream>
using namespace std;
class Solution{
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
return "";
//外部表示的是第一个字符串的大小
for(int j=0;j<strs[0].size();j++)
for(int i=0;i<strs.size()-1;i++)
if(j>=strs[i].size()||j>=strs[i+1].size()||strs[i][j]!=strs[i+1][j])
return strs[i].substr(0,j);
return strs[0];
}
};
int main(){
vector<string> p;
string arr[3] ={"dog","racecar","car"};
//arr可以用二维数组访问每个字符串中的字符
//cout<<arr[0][1]<<endl;
for(int i=0;i<3;i++)
p.push_back(arr[i]);
Solution solution;
cout<<solution.longestCommonPrefix(p)<<endl;
system("pause");
}