编写一个函数来查找字符串数组中的最长公共前缀,保证存在。
时间: 2023-09-13 15:07:40 浏览: 122
以下是Python代码实现:
```
def longestCommonPrefix(strs):
if not strs:
return ""
prefix = strs[0]
for i in range(1, len(strs)):
while strs[i].find(prefix) != 0:
prefix = prefix[:-1]
if not prefix:
return ""
return prefix
```
算法思路:
1. 先将第一个字符串设为前缀。
2. 从第二个字符串开始,若该字符串不是以前缀开头,则将前缀缩短一个字符,直到该字符串以前缀开头或前缀为空。
3. 重复步骤2,直到所有字符串都匹配完毕。
4. 返回前缀。
相关问题
编写一个函数来查找字符串数组中的最长公共前缀,保证存在。C++
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++
#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;
}
```
阅读全文
相关推荐














