longestCommonPrefix
Description:
Write a function to find the longest common prefix string amongst an array of strings.
Thoughts:
1.定义一个结果字符串result="";
2.如果List的长度为0,那么直接返回result;
3.找到数组中最短的字符串min_str;
4.将min_str从索引为0开始的字符,逐一的和其他的字符串的相应位置的字符进行比较
5.如果所有字符串当前的字符都是一致的话,就将当前字符append到result中;否则的话返回result;
6.重复过程4,5直到min_str全部比较完成
以下是我的java代码
package easy; public class LongestCommonPrefix { /*返回长度最短的字符串在List中所在的位置*/ private static int shortestStringLength(String[] strs){ //判断当前的List中是否有字符串,没有的话返回-1,否则返回当前list中长度最短的字符串所在的位置 if(strs.length == 0){ return -1; }else{ int result = strs[0].length(); int record = 0; for(int i = 1; i<strs.length;i++){ if(result>strs[i].length()){ result = strs[i].length(); record = i; } } return record; } } public static String longestCommonPrefix(String[] strs){ String result = ""; int m = shortestStringLength(strs); /*shortestStringLength的返回值等于-1,说明strs中没有字符串,结果为空; * 否则的话,利用最短的字符串,逐个的比较其他的字符串是否包含当前最短字符串的前缀。从而不断地增加前缀的长度。 */ if(m == -1){ return result; }else{ int n = strs.length; for(int i = 0;i<strs[m].length();i++){ char a = strs[m].charAt(i); for(int j = 0; j< n;j++){ if(a != strs[j].charAt(i)){ return result; } } result = result+a; } return result; } } public static void main(String[] args){ String[] strs = new String[]{"ac","ac","a","a"}; String result = longestCommonPrefix(strs); System.out.println(result); } }