您的位置:首页 > 其它

LeetCode 014 Longest Common Prefix

2014-08-17 12:07 330 查看
题目

Write a function to find the longest common prefix string amongst an array of strings.

思路

1 思路很简单,从数组中找出最小字符串,然后根据最小字符串来匹配全部字符串的前缀。

2 如果需要优化,可以在遍历最小字符串的前缀的时候使用半分法。

3 难点在于,字符串的length和数组的length混在一起,数组下标[]和方法()混在一起,容易写错。

public class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0){
return "";
}

int num = strs.length;
int shortestlength = strs[0].length();
int shortindex = 0;
for(int i=0;i<num;i++){
int ln = strs[i].length();
if(ln<shortestlength){
shortestlength= ln;
shortindex = i;
}
}

String shortestString = strs[shortindex];
while(shortestlength>0){
String sub = shortestString.substring(0,shortestlength);
int i;
for(i=0;i<num;i++){
if(!strs[i].substring(0,shortestlength).equals(sub)){
break;
}

}
if(i==num){
break;
}
else{
shortestlength--;
}
}
return shortestString.substring(0,shortestlength);
}
}


15.3.17

public class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs == null  ){
return null;
}
int n = strs.length;
String minStr = "";
int minLength = Integer.MAX_VALUE;

for(int i=0;i<n;i++){
if(strs[i].length()<minLength){
minLength = strs[i].length();
minStr = strs[i];
}
}
for(int i=0;i<minStr.length();i++){
char cur = minStr.charAt(i);
for(int j=0;j<n;j++){
if(strs[j].charAt(i)!=cur){
return minStr.substring(0,i);
}
}
}
return minStr;
}
}


注意JAVA的substring(startIndex,endIndex)和 substring(startindex)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode