接下来有一段时间要开始刷leetcode中String相关的题了
https://leetcode.com/problems/longest-common-prefix/#/description
Write a function to find the longest common prefix string amongst an array of strings.
package go.jacob.day718;
import java.util.Arrays;
/**
*
* @author Jacob
*
*/
public class Demo1 {
/*
* 对字符串数组进行排序,然后只要比较首尾两个字符串即可
*/
public String longestCommonPrefix(String[] strs) {
StringBuilder result = new StringBuilder();
if (strs!= null && strs.length > 0){
Arrays.sort(strs);
char [] a = strs[0].toCharArray();
char [] b = strs[strs.length-1].toCharArray();
for (int i = 0; i < a.length; i ++){
if (b.length > i && b[i] == a[i]){
result.append(b[i]);
}
else {
return result.toString();
}
}
return result.toString();
}
/*
* O(N^2)的解法
*/
public String longestCommonPrefix_1(String[] strs) {
if (strs == null || strs.length == 0)
return "";
int len = strs.length;
int min = strs[0].length();
for (int i = 1; i < len; i++) {
if (strs[i].length() < min)
min = strs[i].length();
}
int res = -1;
boolean flag = false;
for (int i = 0; i < min; i++) {
char tmp = strs[0].charAt(i);
for (int j = 1; j < len; j++) {
if (strs[j].charAt(i) != tmp) {
flag = true;
break;
}
}
if (flag)
break;
res = i;
}
return strs[0].substring(0, res + 1);
}
}