Longest Common Prefix Total Accepted: 24665 Total Submissions: 92370
Question
Solution
Write a function to find the longest common prefix string amongst an array of strings.
Show Tags
Have you met this question in a real interview? Yes No
SOULTION1:
解法就是扫一次。不过各种边界条件很容易出错。
1 public class Solution { 2 public String longestCommonPrefix(String[] strs) { 3 if (strs == null) { 4 return null; 5 } 6 7 if (strs.length == 0 || strs[0].length() == 0) { 8 return ""; 9 }10 11 int len = strs[0].length();12 int i = 0;13 for (; i < len; i++) {14 char c = strs[0].charAt(i);15 16 int j = 1;17 for (; j < strs.length; j++) {18 if (strs[j].length() <= i || c != strs[j].charAt(i)) {19 break;20 }21 }22 23 // there is err.24 if (j < strs.length) {25 break;26 }27 }28 29 // The char i is invalid. 因为读到i时退出,所以不应包含i本身。30 return strs[0].substring(0, i);31 }32 }
SOULTION2:
感谢大神的灵感
重新改写:
1 public class Solution { 2 //http://blog.csdn.net/fightforyourdream/article/details/14642079 3 public String longestCommonPrefix(String[] strs) { 4 if (strs == null) { 5 return null; 6 } 7 8 if (strs.length == 0) { 9 return "";10 }11 12 String s = strs[0];13 int len = s.length();14 15 for (int i = 0; i < len; i++) {16 char c = s.charAt(i);17 18 for (int j = 1; j < strs.length; j++) {19 if (strs[j].length() <= i || c != strs[j].charAt(i)) {20 // The char i is invalid. 因为读到i时退出,所以不应包含i本身。21 return s.substring(0, i);22 }23 }24 }25 26 // Didn't break, the whole String is valid.27 return s;28 }29 }
请Floow主页君的GitHUB: