14. Longest Common Prefix
Easy
10081089FavoriteShare
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string ""
.
Example 1:
Input: ["flower","flow","flight"]
Output: "fl"
Example 2:
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z
.
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
while(i < strs.length){
while(strs[i].indexOf(pre) != 0)
pre = pre.substring(0,pre.length()-1);
i++;
}
return pre;
}
}
核心思想: 先找到strs[0]与strs[1]的最长公共前缀temp_pre, 然后验证temp_pre是否为strs[2],strs[3],... 的前缀,
总之,最终的pre的长度一定是小于等于temp_pre的
public String longestCommonPrefix(String[] strs) {
if(strs == null || strs.length == 0) return "";
String pre = strs[0];
int i = 1;
while(i < strs.length){
while(strs[i].indexOf(pre) != 0)
pre = pre.substring(0,pre.length()-1);
/**
* If the first cycle is completed, aimPrefix.length() == 0 is true
* it's mean there is no longest prefix surely
*/
if (pre.length() == 0) {
return "";
} else {
i++;
}
}
return pre;
}
核心思想: 如果第一轮循环,就发现temp_pre为“”,那么就可以终止循环了,不用再继续;这样在多个参数没有最长公共前缀时,可以大大提高效率;