class Solution { public: static string longestCommonPrefix(vector<string> &strs) { if (strs.empty()) return {}; sort(strs.begin(), strs.end()); string st = strs.front(), en = strs.back(); int i; int num = (int) min(st.size(), en.size()); for (i = 0; i < num && st[i] == en[i]; i++); string res = string(st, 0, i); return res; } }; 作者:15066212pp 链接:https://leetcode.cn/problems/longest-common-prefix/solutions/2328190/yun-xing-shi-jian-0mspai-xu-qiu-jie-by-1-r37b/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
时间: 2024-04-12 18:34:08 浏览: 94
STRS-2.2.3.rar_ STRS-2.2.3_.strs_STRS-2.2.3_item.strs_strs
这段代码是一个解决LeetCode上"最长公共前缀"问题的C++实现。以下是对代码的解释:
```cpp
class Solution {
public:
static string longestCommonPrefix(vector<string> &strs) {
if (strs.empty()) return {}; // 如果输入为空,直接返回空字符串
sort(strs.begin(), strs.end()); // 对输入的字符串数组进行排序
string st = strs.front(); // 获取排序后的第一个字符串
string en = strs.back(); // 获取排序后的最后一个字符串
int i;
int num = (int) min(st.size(), en.size()); // 获取两个字符串中较短的长度
// 逐个比较字符,找到最长公共前缀的长度
for (i = 0; i < num && st[i] == en[i]; i++);
string res = string(st, 0, i); // 截取最长公共前缀部分,构建结果字符串
return res;
}
};
```
这段代码定义了一个名为`Solution`的类,其中有一个静态成员函数`longestCommonPrefix`用于计算给定字符串数组`strs`的最长公共前缀。
首先,代码检查输入数组是否为空,如果为空,则直接返回空字符串。
然后,通过使用`sort()`函数对字符串数组进行排序,以便找到最长公共前缀。
接下来,代码获取排序后的第一个字符串和最后一个字符串,并计算出它们中较短的长度。
然后,通过逐个比较字符的方式,找到最长公共前缀的长度。
最后,代码使用`string`的构造函数截取最长公共前缀部分,构建结果字符串,并返回结果。
注意:该实现假设输入的字符串数组`strs`至少包含一个字符串。如果输入为空,则返回空字符串。
阅读全文