编写一个函数来查找字符串数组中的最长公共前缀。
时间: 2023-04-24 07:00:24 浏览: 114
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
示例:
输入: ["flower","flow","flight"]
输出: "fl"
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
思路:
先将字符串数组按照字典序排序,然后比较第一个字符串和最后一个字符串的公共前缀即可。
代码实现:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty()) return "";
sort(strs.begin(), strs.end());
string first = strs.front(), last = strs.back();
int i = ;
while(i < first.size() && first[i] == last[i]) i++;
return first.substr(, i);
}
};
相关问题
1. 编写一个函数来查找字符串数组中的最长公共前缀
在编程中,找到字符串数组中的最长公共前缀通常意味着找到所有字符串都有的共同部分,如果存在的话。这个任务可以使用迭代或分治策略来完成。下面是一个简单的 Python 函数示例,它使用了迭代的方法:
```python
def longest_common_prefix(strs):
if not strs:
return ""
shortest_str = min(strs, key=len) # 找到最短的字符串
prefix = shortest_str
for i in range(1, len(shortest_str) + 1): # 从前往后逐字符比较
char = shortest_str[:i] # 取当前长度的前缀
for string in strs:
if string.startswith(char) is False:
# 如果某个字符串不以当前前缀开头,则返回已检查的前缀
return prefix
prefix = char # 如果所有字符串都匹配,继续扩大前缀
return prefix # 当所有字符串都有相同的前缀时返回该前缀
# 示例
strings = ["flower", "flow", "flight"]
print(longest_common_prefix(strings)) # 输出:fl
```
编写一个函数查找字符串数组中的最长公共前缀c语言
以下是一个用C语言编写的函数,用于查找字符串数组中的最长公共前缀:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STRINGS 100
#define MAX_LENGTH 100
char* longestCommonPrefix(char strs[][MAX_LENGTH], int n) {
if (n == 0) return "";
// 假设第一个字符串是最短的前缀
int min_len = strlen(strs[0]);
// 找到最短字符串的长度
for (int i = 1; i < n; i++) {
int len = strlen(strs[i]);
if (len < min_len) {
min_len = len;
}
}
// 逐字符比较
char* prefix = (char*)malloc((min_len + 1) * sizeof(char));
int i = 0;
while (i < min_len) {
char current = strs[0][i];
for (int j = 1; j < n; j++) {
if (strs[j][i] != current) {
prefix[i] = '\0';
return prefix;
}
}
prefix[i] = current;
i++;
}
prefix[i] = '\0';
return prefix;
}
int main() {
char strings[][MAX_LENGTH] = {"flower", "flow", "flight"};
int n = sizeof(strings)/sizeof(strings[0]);
char* prefix = longestCommonPrefix(strings, n);
printf("最长公共前缀是: %s\n", prefix);
free(prefix);
return 0;
}
```
这个程序的工作原理如下:
1. 我们定义了一个函数 `longestCommonPrefix`,它接受一个字符串数组和数组的大小作为参数。
2. 首先,我们检查数组是否为空。如果是,我们返回一个空字符串。
3. 然后,我们找到数组中最短字符串的长度,因为最长公共前缀不可能比最短的字符串还长。
4. 我们创建一个新字符串 `prefix` 来存储结果。
5. 我们逐字符比较所有字符串的对应位置字符。如果发现不匹配,我们就终止比较,因为我们已经找到了最长公共前缀。
6. 如果所有字符串在当前位置都有相同的字符,我们就将其添加到 `prefix` 中。
7. 最后,我们返回 `prefix`。
8. 在 `main` 函数中,我们测试了这个函数,使用了一个包含三个字符串的数组。
这个解决方案的时间复杂度是 O(n*m),其中 n 是字符串数组的长度,m 是字符串的平均长度。空间复杂度是 O(m),因为我们创建了一个新的字符串来存储结果。
阅读全文
相关推荐














