题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
思路:
以第一个strs[0]为公共前缀ans,和第二个字符串比较找出公共的前缀ans,再将这个ans和第三个字符串比较,找出公共的前缀ans,一直比较到最后一个字符串。如果中间为“”,没有公共的字符串。则直接返回。
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
String ans = strs[0];
int n = strs.length;
for(int i = 1; i < n; i++) {
int j = 0;
for(; j < ans.length() && j < strs[i].length(); j++) {
if(ans.charAt(j) != strs[i].charAt(j)) break;
}
ans = ans.substring(0, j);
if(ans.equals("")) return ans;
}
return ans;
}
}
while(j < ans.length() && j < strs[i].length() &&
ans.charAt(j) == strs[i].charAt(j)) {
j++;
}
觉得用while好一些,长度不知道
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
int N = strs.length;
String ans = strs[0];
for(int i = 1; i < N; i++) {
int j = 0;
while(j < ans.length() && j < strs[i].length() &&
ans.charAt(j) == strs[i].charAt(j)) {
j++;
}
ans = ans.substring(0 ,j);
if(ans.equals("")) return "";
}
return ans;
}
}
时间复杂度:O(S) S 是所有字符串中字符数量的总和?
https://leetcode-cn.com/problems/longest-common-prefix/solution/hua-jie-suan-fa-14-zui-chang-gong-gong-qian-zhui-b/