0
点赞
收藏
分享

微信扫一扫

[字符串]BM84 最长公共前缀-简单

​​BM84 最长公共前缀​​

描述

给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

数据范围: [字符串]BM84 最长公共前缀-简单_字符串, [字符串]BM84 最长公共前缀-简单_字符串_02进阶:空间复杂度 [字符串]BM84 最长公共前缀-简单_最长公共前缀_03,时间复杂度 [字符串]BM84 最长公共前缀-简单_最长公共前缀_03

示例1

输入:

["abca","abc","abca","abc","abcc"]

返回值:

"abc"


示例2

输入:

["abc"]

返回值:

"abc"

题解

暴力遍历法

思路:

  1. 设prefix_length 为最长公共前缀的长度,当输入为空的时候公共前缀为空
  2. 当输入不为空时,设置最长公共长度为第一个字符串的长度
  3. 遍历剩下的字符串,在剩下的字符串中遇到第一个不想等的字符的时候更新最长公共前缀长度
  4. 返回值:s[0].sub_str(0,prefix_length)

代码如下:

#include <bits/stdc++.h>

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);
}

trie树(字典树)解法



举报

相关推荐

0 条评论