您的位置:首页 > 其它

leetcode:Longest Common Prefix(取最长字符串前缀)

2013-10-14 23:13 525 查看
Question:Write a function to find the longest common prefix string amongst an array of strings.

写一个功能public String longestCommonPrefix(String[] strs)找出字符串数组的最长公共前缀。

算法思路:① 首先分析最长公共字符串长度一定不会超过最短字符串的长度,所以先找出最短字符串的长度minlength。

     ② 然后从第一个字符串挨个取字母,加到Str中,然后判断数组其他字符串的前缀是否和str相同 个数不会超过minlength,就能判断该字符串数组最长前缀。

代码设计:

class Solution {
public String longestCommonPrefix(String[] strs) {
// Note: The Solution object is instantiated only once and is reused by each test case.
String str="";
if(strs.length==0)
return str;
int minlength=lengthofSmallString(strs);  //找到最小字符串长度
for(int count=0;count<minlength;count++){//最长前缀的长度一定不会超过minlength
str+=strs[0].charAt(count);    //挨个取第一个字符串的字母,然后判断其他字符串前缀是不是str
for(int i=0;i<strs.length;i++){
if(!isContains(strs[i], str)){
str=str.substring(0, count);
return str;
}
}

}
return str;
}
public Boolean isContains(String str1,String str2){//这个函数的作用是判断str2是否是str1的前缀
for(int i=0;i<str2.length();i++){
if(str1.charAt(i)!=str2.charAt(i))
return false;
}
return true;
}
public int lengthofSmallString(String[] strs){  //这个函数的作用找到字符串数组的最小字符串长度并返回。
int min=Integer.MAX_VALUE;
for(int i=0;i<strs.length;i++){
if(strs[i].length()<min){
min=strs[i].length();
}
}
return min;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: