难度:简单
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
题目解析:
就直接暴力解决吧。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <list>
#include <unordered_map>
#include <cstring>
#include <map>
#include <stdexcept>
using namespace std;
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string res = {""};
if (strs.empty())
return res;
//需要判断最小的字符串长度
int my_min = strs[0].size();
for (int k = 1; k < strs.size(); k++)
{
if (my_min > strs[k].size())
my_min = strs[k].size();
}
int i = 0;
int j = 0;
//直接暴力解决
for (; i < my_min; i++)
{
for (j = 0; j < strs.size(); j++)
{
if ((j + 1) < strs.size() && strs[j][i] != strs[j + 1][i])
return res;
}
res.push_back(strs[j-1][i]);
}
return res;
}
};
int main()
{
Solution solution;
vector<string> my_v;
string str = { "dog" };
my_v.push_back(str);
str = { "racecar" };
my_v.push_back(str);
str = { "car" };
my_v.push_back(str);
cout << solution.longestCommonPrefix(my_v) << endl;
system("pause");
return 0;
}