编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,则返回空字符串。用Java实现
时间: 2023-06-06 13:05:52 浏览: 51
好的,这个问题可以回答。以下是Java代码实现:
```java
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;
}
```
这个函数会接受一个字符串数组作为参数,然后查找数组中所有字符串的公共前缀。如果数组中的字符串没有公共前缀,则返回空字符串。这个算法的时间复杂度是O(nm),其中n是字符串数组的长度,m是所有字符串中最短的字符串的长度。
相关问题
java 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""
以下是一个Java函数,用于查找字符串数组中的最长公共前缀。
```java
public static String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
if (strs.length == 1) {
return strs[0];
}
int minLength = Integer.MAX_VALUE;
for (String str : strs) {
minLength = Math.min(minLength, str.length());
}
int low = 0;
int high = minLength - 1;
while (low <= high) {
int mid = (low + high) / 2;
boolean allMatch = true;
char c = strs[0].charAt(mid);
for (int i = 1; i < strs.length; i++) {
if (strs[i].charAt(mid) != c) {
allMatch = false;
break;
}
}
if (allMatch) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return strs[0].substring(0, (low + high) / 2 + 1);
}
```
该算法的时间复杂度为O(NMlogM),其中N为字符串数组的长度,M为字符串数组中最短字符串的长度。
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`。