本文已参与「新人创作礼」活动,一起开启掘金创作之路。
问题
给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。
思路
遍历字符串数组中的所有字符串,从所有字符串的首元素开始逐个字符串遍历,只有当所有字符串的同一个位置的元素相同时,才能算是公共前缀。
代码实现
class Solution {
public:
/**
*
* @param strs string字符串vector
* @return string字符串
*/
string longestCommonPrefix(vector<string>& strs) {
// write code here
if (strs.size() == 0) return "";
if (strs.size() == 1) return strs[0];
string ret;
int i,j;
int minLen = strs[0].size();
// 计算最小长度的字符串
for (int i = 1; i < strs.size(); i++)
{
minLen > strs[i].size()?strs[i].size():minLen;
}
for (i = 1, j = 0; i < strs.size(), j < minLen; i++)
{
if (strs[i][j] == strs[i - 1][j])
{
// 添加公共元素
if (i == strs.size() - 1)
{
ret += strs[i][j];
i = 0;
j++;
}
}
else
{
break;
}
}
return ret;
}
};