最长公共前缀(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/难度简单)的主要内容,如果未能解决你的问题,请参考以下文章

最长公共子串(NC127/考察次数Top22/难度中等)

最长公共子序列-II(NC92/考察次数Top58/难度中等)

最长公共子序列-II(NC92/考察次数Top58/难度中等)

最长回文子串(NC17/考察次数Top29/难度中等)

最长递增子序列(NC91/考察次数Top32/难度中等)

最长无重复子数组(NC41/考察次数Top14/难度中等)