编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串“” 输入:["flower","flow","flight"] 输出:"f1" 输入:["dog","racecar","car"] 输出:“” 解释:输入列表不存在公共前缀,返回"".
时间: 2023-07-05 12:19:59 浏览: 115
好的,这是一个比较经典的字符串问题,可以使用水平扫描法解决。具体思路如下:
1. 取字符串数组中第一个字符串作为基准字符串。
2. 遍历基准字符串的每个字符,依次与其他字符串的对应字符进行比较。
3. 如果出现不匹配的情况,直接返回基准字符串中对应位置之前的子串即可。
4. 如果遍历完成,说明基准字符串是所有字符串的公共前缀。
下面是使用 Python 语言实现的代码:
```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[0:len(prefix)-1]
if not prefix:
return ""
return prefix
```
你可以将上述代码复制到 Python 环境中运行,并传入相应的测试用例进行验证。
相关问题
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串
这里提供一个解决方案,可以通过水平扫描字符串数组来查找最长公共前缀。具体步骤如下:
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;
}
```
js编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串
好的,以下是实现最长公共前缀的 JavaScript 函数:
```javascript
function longestCommonPrefix(strs) {
if (strs.length === 0) return "";
let prefix = strs[0];
for (let i = 1; i < strs.length; i++) {
while (strs[i].indexOf(prefix) !== 0) {
prefix = prefix.slice(0, prefix.length - 1);
if (prefix.length === 0) return "";
}
}
return prefix;
}
```
这个函数接收一个字符串数组 `strs` 作为参数,返回这个数组中所有字符串的最长公共前缀。首先判断数组是否为空,如果是,则返回空字符串。然后将第一个字符串设置为前缀 `prefix`。接下来循环遍历数组中的所有字符串,如果当前字符串不以 `prefix` 开头,则将 `prefix` 不断缩短,直到当前字符串以 `prefix` 开头或者 `prefix` 变成空字符串,如果 `prefix` 变成了空字符串,则说明不存在公共前缀,返回空字符串。最后返回 `prefix`。
阅读全文