14. 最长公共前缀
#### 题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
提示:
1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i]仅由小写英文字母组成
示例
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
题解
用sort函数根据字典序来进行排列,在公共前缀区域大家的长度都是一样的,但由于公共前缀后的下一个字符的不同,字符串就会因此开始被排序,这样就保证了排序后,最后一个字符串与第一个字符串有且只有公共前缀相同(如果公共前缀存在的话)。
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int n = strs.size();
sort(strs.begin(), strs.end());
string ans = "";
for(int i = 0; i < strs[0].size(); ++i){
if(strs[0][i] == strs[n - 1][i]){
ans += strs[0][i];
}
else{
break;
}
}
return ans;
}
};
C++相关语法: <algorithm> 头文件中的sort函数
在 C++ 中,sort 函数是标准库中的一个非常有用的函数,它用于对序列进行排序。sort 函数定义在 <algorithm> 头文件中,因此在使用之前需要包含这个头文件。
sort 函数的基本语法如下:
sort(ForwardIterator first, ForwardIterator last);
first:指向要排序序列的第一个元素的迭代器。last:指向要排序序列最后一个元素的下一个位置的迭代器。
这个函数会将序列 [first, last) 中的元素进行排序。
#include <algorithm>
#include <vector>
#include <iostream>
int main() {
std::vector<int> vec = {5, 3, 2, 8, 6};
std::sort(vec.begin(), vec.end());
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
输出将会是:
2 3 5 6 8
3821

被折叠的 条评论
为什么被折叠?



