您的位置:首页 > 编程语言 > Java开发

[leetcode]14. Longest Common Prefix(Java)

2017-07-18 10:04 337 查看
接下来有一段时间要开始刷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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: