编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
思路
最长公共前缀不会超过最小的字符串,逐个字符判断是否相等。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
class Solution {
public:
string longestCommonPrefix(vector<string>& strs)
{
if(strs.size() == 0)
return "";
int min1 = INT_MAX;
string a;
//遍历 找到最小的 字符串的长度
for(int i=0; i<strs.size(); i++)
{
int m = strs[i].size();
min1 = min(min1, m);
}
//最长公共前缀不会超过最小的字符串
for(int i=0; i<min1; i++)
{
for(int k=0; k<strs.size()-1; k++)
{
if(strs[k][i] == strs[k+1][i])
continue;
else return a;
}
a = a + strs[0][i];
}
return a;
}
};
int main()
{
Solution s;
vector<string> strs = {"fliower","fliow","flight"};
string str = s.longestCommonPrefix(strs);
cout << str << endl;
return 0;
}