题目描述
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 ""
.
Note:
All given inputs are in lowercase letters a-z
.
样例
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.
思路分析
方法一:对字符串数组逐个遍历,剔除多余字符
方法二:对数组进行排序,只需比较首尾字符串即可
代码
方法一
public String longestCommonPrefix(String[] strs) {
if (strs.length==0 || strs==null) {
return "";
}
String head = strs[0];
int i = 1;
while (i < strs.length){
while (strs[i].indexOf(head) != 0){
head = head.substring(0, head.length()-1);
}
if (head == null) {
return "";
}
i++;
}
return head;
}
方法二
public static String longestCommonPrefix(String[] strs)
{
if (strs.length==0 || strs==null) {
return "";
}
StringBuffer str = new StringBuffer();
Arrays.sort(strs);
char head[] = strs[0].toCharArray();
char tail[] = strs[strs.length-1].toCharArray();
int i = 0;
while (i<head.length) {
if (tail.length>i && head[i] == tail[i]) {
str.append(head[i]);
}
else {
return str.toString();
}
i++;
}
return str.toString();
}
结果