首页 > 代码库 > LeetCode: Longest Common Prefix 解题报告

LeetCode: Longest Common Prefix 解题报告

Longest Common Prefix Total Accepted: 24665 Total Submissions: 92370

My Submissions

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

 

Discuss

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 }
View Code

 

SOULTION2:

感谢大神的灵感http://blog.csdn.net/fightforyourdream/article/details/14642079

重新改写:

 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 }
View Code

 

请Floow主页君的GitHUB: 

https://github.com/yuzhangcmu/LeetCode_algorithm/blob/master/string/LongestCommonPrefix.java

 

LeetCode: Longest Common Prefix 解题报告