Leedcode刷题笔记(实时更新)

文章介绍了作者在刷算法题时遇到的最长公共前缀问题,通过优快云记录解题思路。文章详细讲解了使用sort函数结合lambda表达式对字符串数组按长度进行排序,并阐述了sort函数的两种形式以及const常量引用的作用。最后给出了具体的C++代码实现,用于找出字符串数组的最长公共前缀。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

最近本人在刷算法题,时常会学到新的知识,所以打算通过优快云记录一下学习的收获。希望这些写的分享也能让大家有收获,另外如果有任何错误的地方,请大家多多指正。


目录

前言

一、最长公共前缀

收获:


一、最长公共前缀

一下是完整的算法解答:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        bool flag=false;
        int j=0;
        sort(strs.begin(),strs.end(),[](const string &s1, const string &s2){return s1.length()<s2.length();});
        //先确定字母序号,再遍历string,问题是如何确定j退出的判断
        for(j=0;j<strs[0].length();++j)
        {
            for(int i=1;i<strs.size();++i)
            {
                //如果出现不等于的情况,就直接退出,那么说明截止到这个位置,退出两个循环
                //如果遍历后发现相等,那么在遍历结束之后将字母放入字符串中
                if(strs[0][j]!=strs[i][j]){    
                    flag=true;
                    break;
                }
                //下面这段增加了普通情况的比较次数
                //if(j>strs[i].length())flag=true;
            }
            //如何都相同,那么写入string
            if(flag)break;
        }
        return strs[0].substr(0,j);
    }
};

收获:

sort函数有两种格式,分别是:


void sort (RandomAccessIterator first, RandomAccessIterator last);

void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

第一种格式只传递了前两个参数,即待排序序列的起始和终止迭代器,这种情况下sort函数默认使用 operator< 比较元素的大小(即依据数值从小到大排序)。

第二种格式传递了一个额外的参数 comp,表示比较函数,可以自定义排序规则。

void longestCommonPrefix(vector<string>& strs) { 
sort(strs.begin(), strs.end(), [](const string& s1, const string& s2) { return s1.length() < s2.length(); });
}

以上的第三个参数是lambda表达式,作为第三个参数传递给sort函数,它用于指定sort函数的排序规则。传入两个参数s1 s2,若返回值为true,则s1排在s2前面,以上代码实现了将strs容器中的字符串依据长度排序(从短到长)。

为什么要使用const 常量型呢?定义成const是为了避免字符串在排序的过程中被修改


实时更新中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值