编写一个函数来查找字符串数组中的最长公共前缀,保证存在。C++
时间: 2024-05-27 15:14:22 浏览: 117
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0) { // 如果字符串数组为空,返回空字符串
return "";
}
char* prefix = strs[0]; // 初始化前缀为第一个字符串
for (int i = 1; i < strsSize; i++) {
int j = 0;
while (prefix[j] != '\0' && strs[i][j] != '\0' && prefix[j] == strs[i][j]) {
j++; // 找到最长公共前缀的长度
}
prefix[j] = '\0'; // 将前缀字符串的第一个不一致的字符设为字符串结束符
}
return prefix;
}
相关问题
编写一个函数来查找字符串数组中的最长公共前缀c语言c++
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0)
return "";
char* prefix = strs[0];
int i, j;
for (i = 1; i < strsSize; i++) {
j = 0;
while (prefix[j] && strs[i][j] && prefix[j] == strs[i][j])
j++;
prefix[j] = '\0';
if (prefix[0] == '\0')
return "";
}
return prefix;
}
编写一个函数来查找字符串数组中的最长公共前缀,保证存在。c➕➕
```c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string longestCommonPrefix(vector<string>& strs) {
if (strs.empty()) return ""; // 如果字符串数组为空,则返回空字符串
string res = ""; // 初始化结果字符串
for (int i = 0; i < strs[0].length(); i++) { // 遍历第一个字符串的每一个字符
char c = strs[0][i]; // 取出第一个字符串的当前字符
for (int j = 1; j < strs.size(); j++) { // 遍历剩余的字符串
if (i >= strs[j].length() || strs[j][i] != c) { // 如果当前字符串已经遍历到结尾或者当前字符不相等
return res; // 直接返回当前已经匹配的最长公共前缀
}
}
res += c; // 如果所有字符串的当前字符都相等,则将其加入最长公共前缀中
}
return res; // 如果第一个字符串的所有字符都匹配,则返回最长公共前缀
}
int main() {
vector<string> strs = {"flower", "flow", "flight"}; // 测试用例
string res = longestCommonPrefix(strs); // 调用函数
cout << res << endl; // 输出结果
return 0;
}
```
阅读全文