BM84 最长公共前缀
描述
给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。
数据范围: ,
进阶:空间复杂度
,时间复杂度
示例1
输入:
["abca","abc","abca","abc","abcc"]
返回值:
"abc"
示例2
输入:
["abc"]
返回值:
"abc"
题解
暴力遍历法
思路:
- 设prefix_length 为最长公共前缀的长度,当输入为空的时候公共前缀为空
- 当输入不为空时,设置最长公共长度为第一个字符串的长度
- 遍历剩下的字符串,在剩下的字符串中遇到第一个不想等的字符的时候更新最长公共前缀长度
- 返回值:s[0].sub_str(0,prefix_length)
代码如下:
using namespace std;
string longestCommonPrefix(vector<string> &strs)
{
std::string prefix;
if (strs.empty())
{
return prefix;
}
int prefix_length = strs[0].size();
for (int i = 1; i < strs.size(); ++i)
{
for (int k = 0; k < prefix_length; ++k)
{
if (k >= strs[i].size() || strs[i - 1][k] != strs[i][k])
{
prefix_length = k;
break;
}
}
}
return strs[0].substr(0, prefix_length);
}