编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串
时间: 2025-01-07 19:14:32 浏览: 4
在编程中,编写一个函数来查找字符串数组中的最长公共前缀通常涉及到遍历数组并比较每个字符串的首字符,直到找到第一个不匹配的字符或者遍历完整个数组。这里是一个简单的Python函数示例:
```python
def longest_common_prefix(strs):
if not strs: # 如果数组为空,直接返回空字符串
return ""
shortest_str = min(strs, key=len) # 找到最短的字符串
for i, char in enumerate(shortest_str): # 遍历最短字符串的每个字符
for other in strs:
if other[i] != char: # 如果其他字符串的相应位置不等于当前字符,结束循环
return shortest_str[:i] # 返回到发现不匹配的前一个字符组成的公共前缀
return shortest_str # 如果所有字符都相等,返回最短的那个字符串作为公共前缀
# 示例
prefixes = ["flower", "flow", "flight"]
result = longest_common_prefix(prefixes)
print(f"最长公共前缀是: {result}")
相关问题
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串
这里提供一个解决方案,可以通过水平扫描字符串数组来查找最长公共前缀。具体步骤如下:
1. 如果字符串数组为空,则返回空字符串。
2. 初始化最长公共前缀为第一个字符串。
3. 遍历字符串数组,对于每个字符串,不断缩小最长公共前缀的范围,直到最长公共前缀与当前字符串的前缀匹配。
4. 如果最长公共前缀为空字符串,则返回空字符串,否则返回最长公共前缀。
代码实现如下:
```
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
String prefix = strs[0];
for (int i = 1; i < strs.length; i++) {
while (strs[i].indexOf(prefix) != 0) {
prefix = prefix.substring(0, prefix.length() - 1);
if (prefix.isEmpty()) {
return "";
}
}
}
return prefix;
}
```
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串“”
在编写一个函数来查找字符串数组中的最长公共前缀时,你可以采用以下步骤:
```python
def longest_common_prefix(strs):
if not strs: # 如果数组为空,直接返回空字符串
return ""
shortest_str = min(strs, key=len) # 找出最短的字符串作为基准
for i, char in enumerate(shortest_str): # 遍历最短字符串的每个字符
for other_str in strs:
if other_str[i] != char: # 如果当前字符在其他字符串中不同,则退出循环
return shortest_str[:i] # 返回已经检查过的公共部分
else:
continue # 如果所有字符串都匹配,继续下一位字符
return shortest_str # 如果遍历完都没有提前退出,说明所有字符串都有相同的前缀,返回整个最短字符串
# 示例
str_array = ["flower", "flow", "flight"]
result = longest_common_prefix(str_array)
print(f"最长公共前缀是: {result}")
```
阅读全文