标签:
Write a function to find the longest common prefix string amongst an array of strings.
大意就是,写一个函数可以找到一个数组字符串中的最长前缀。
分析: 最长前缀的最大值为数组字符串中长度最短的字符,由最短字符串由后向前递减可以得到最长前缀。
算法构架:先遍历求得最短字符串和长度n,然后再次遍历数组,用最短字符串依次对比当前字符串前n个字符是否相等,不相等则n--,直到找到最短字符串和当前字符串前n个字符相等,继续遍历。
注意:因为是求共有的前缀,所以前缀必定满足所有字符串,因此只用单次遍历数组即可以求得答案。
public class Solution { public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) { return ""; } int length = strs[0].length(); String res = strs[0]; for (int i = 1; i < strs.length; i++) { if (strs[i].length() < length) { length = strs[i].length(); res = strs[i]; } } for (String s : strs) { while (!res.equals(s.substring(0,length))) { length--; res = res.substring(0,length); } } return res; } }
复杂度为n
LeetCode: 14. Longest Common Prefix
标签:
原文地址:http://www.cnblogs.com/snakech/p/5758020.html