lintcode最长公共前缀
给k个字符串,求出他们的最长公共前缀(LCP)
您在真实的面试中是否遇到过这个题? Yes
样例
在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 为 “A”
在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 为 “ABC”
解题思路
1.寻找出数组中最短的字符串作为待比较前缀
2.两两比较数组中的元素,若str1与str2equals,继续遍历字符串
public class Solution {
/**
* @param strs: A list of strings
* @return: The longest common prefix
*/
public String longestCommonPrefix(String[] strs) {
// write your code here
HashMap<Character,Integer> map= new HashMap<Character,Integer>();
if(strs.length ==0)
return "";
int len = strs.length;
int shortest = Integer.MAX_VALUE;
for(int i=0;i<len;i++){
int tmplen = strs[i].length();
shortest = Math.min(shortest,tmplen);
}
int i =0;
while(shortest>0){
for( i=0;i<len-1;i++){
String str1 = strs[i].substring(0,shortest);
String str2 = strs[i+1].substring(0,shortest);
if( str1.equals(str2))
continue;
else
break;
}
if(i==len-1)
break;
else
shortest--;
}
return strs[0].substring(0,shortest);
}
}
总结
刚开始遇到这种题目感觉不是很适应,参考了一下其他人写的觉得还是要理解题目,将思路转换为代码,继续刷题!