最长公共前缀(NC55/考察次数Top64/难度简单)
Posted 码农指南
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长公共前缀(NC55/考察次数Top64/难度简单)相关的知识,希望对你有一定的参考价值。
描述:
编写一个函数来查找字符串数组中的最长公共前缀。
示例1
输入:
[“abca”,“abc”,“abca”,“abc”,“abcc”]
返回值:
“abc”
(题目来自牛客网)
用C++实现如下
class Solution {
public:
/**
*
* @param strs string字符串vector
* @return string字符串
*/
string longestCommonPrefix(vector<string>& strs) {
//思路,输入为字符串数组,输出为最长公共前缀
string s = ""; //定义一个存放公共前缀的字符串,初始化为空;
if(strs.empty()) //如果输入数组为空,则返回空;
{
return s;
}
if(strs.size() == 1) //如果字符串数组只有一个元素,则返回此元素本身;
{
return strs[0];
}
int len = 0; //定义公共前缀的长度,初始化为0
int minsize = strs[0].size(); //定义字符串数组的最小长度,初始化为第一个字符串的长度
for(int i=1; i<strs.size(); i++) //依次遍历所有的字符串,求出字符串数组的最小长度
{
if(strs[i].size()<minsize)
minsize = strs[i].size(); //将最小的赋值给minsize;
}
//利用两层for循环 进行遍历是很常规的遍历操作
for(int i=0; i<minsize; i++) //依次遍历每一个字符,进行判断
{
char c = strs[0][i]; //记录正在比较的字符
int count = 0; //记录所有字符串中字符与正在比较的字符 相等的次数
for(int j = 0; j<strs.size(); j++) //遍历所有的字符串
{
if(strs[j][i] == c)
{
count++; //相等的次数
}
if(count == strs.size()) //如果每个都相等则
{
len++; //len加1
s.push_back(strs[j][i]); //同时将此字符push_back到存放公共前缀的字符串s中
}
}
}
return s; //返回s
}
};
纯手撕代码,如果觉得内容不错麻烦点个赞,后面陆续配上Top100算法题通俗易懂的讲解视频,可以花两个月时间完全掌握,进大厂不是梦,转行狗亲测!
以上是关于最长公共前缀(NC55/考察次数Top64/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章
最长公共子序列-II(NC92/考察次数Top58/难度中等)