C++中sort函数、1.4最长公共子串
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;
}
};
看了不少别人的解法,还是感慨自己要走的路还很远。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)