首页 > 编程语言 >C++中sort函数、1.4最长公共子串

C++中sort函数、1.4最长公共子串

时间:2022-11-14 15:01:56浏览次数:47  
标签:sort 1.4 前缀 strs C++ 公共 排序 函数

sort()即为用来排序的函数,它根据具体情况使用不同的排序方法,效率较高。
sort在实现时避免了经典快速排序中可能出现的会导致实际复杂度退化到O(n2)的极端情况。

使用sort()需要头文件

#include<algorithm>

格式如下

sort( 元素首地址 , 元素末地址 , 比较函数(非必填) )

不填比较函数时默认为从小到大进行排序,填入cmd时为从大到小排序

注:结构体数组排序时,必须加入cmp来排序规则,也可以将格式写为

struct number
{
    int x,y;
};

bool cmp(number a,number b)
{
    return a.x>b.x;
}

 

接下来在最长公共前缀这道题中我们使用sort来实现

 

1.4最长公共前缀

  编写一个函数来查找字符串数组中的最长公共前缀。

  如果不存在公共前缀,返回空字符串 ""

 示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

 提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

 

先使用sort函数对strs字符数组的元素进行从小到大排序,将元素中字母个数最少的放在前面。首先对字母个数最少的单词进行遍历,定义一个char型中间变量,每次循环对其进行赋值后嵌套循环对strs中的其他元素进行比对

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string answer_0 = "";
        if(strs.size() == 0) 
        return answer_0;
        sort(strs.begin(),strs.end());
        for(int i=0;i<strs[0].size();i++)
        {
            char temp = strs[0][i];
            int j;
            for(j=1;j<strs.size();j++)
            {
                if(temp != strs[j][i])
                break;       
            }
            if(j >= strs.size())
            answer_0 += temp;
            else break;
        }
        return answer_0;
    }
};

看了不少别人的解法,还是感慨自己要走的路还很远。

 

 

 

标签:sort,1.4,前缀,strs,C++,公共,排序,函数
From: https://www.cnblogs.com/sdoyeji/p/16889036.html

相关文章

  • 使用 C++ 部署深度学习模型快速上手方案
    本文将从获取一个训练好的 shufflenet_v2 模型出发,讲解如何使用MegEngineLite的C++接口将其部署到CPU(Linuxx86/AndroidArm)环境下运行。主要分为以下小节:导......
  • C和C++的区别
    一、面向过程语言和面向对象语言C语言是面向过程语言,而C++是面向对象语言(一)面向过程和面向对象的区别(1)面向过程:面向过程编程就是分析出解决问题的步骤,然后把这些步骤一......
  • C++ 位运算Bitwise operations详解 ----- 重要的解题技巧
    什么是位运算:利用位运算符号进行二进制位计算的操作即为位运算维基百科:......
  • CSP 202209-1 如此编码 C++
     链接1#include<iostream>2#include<vector>34intmain(){5intx{},m{};6std::cin>>x>>m;7std::vector<std::vector<int>>nc......
  • C++ explicit关键字详解
    C++编码时,可以通过构造函数将相应的数据类型转换成为C++类的对象,从某种程度来说给编码带来了方便,但并不是每次都正确,为了避免这种情况,C++提供了explicit关键字,相对于implic......
  • 在Windows平台使用Visual C++ 2022编译QT6源码
    在Windows平台使用VisualC++2022编译QT6源码目录在Windows平台使用VisualC++2022编译QT6源码0.引言1.准备工作2.配置3.编译和安装0.引言如果您想......
  • C++PrimerPlus中文第六版第6章编程练习答案
    1、#include<iostream>usingnamespacestd;intmain(){charch;cout<<"Entertext:\n";while(cin.get(ch)&&ch!='@'){if(isa......
  • 75.Sort Colors
    Givenanarraywith n objectscoloredred,whiteorblue,sortthemsothatobjectsofthesamecolorareadjacent,withthecolorsintheorderred,white......
  • C++ 很有意思的自动相亲交往系统基础版
    Boy.h:#pragmaonce#include<string>#include<vector>usingnamespacestd;classGirl;classBoy{public:Boy();Boy(intage,stringname,intsalary......
  • c++ 基础语法
    一眼mophie,鉴定为:普及组。#include<bits/stdc++.h>#defineintlonglong#definepbpush_back#definempmake_pair#definepiipair<int,int>#definexfirst#de......