码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode: Longest Common Prefix 解题报告

时间:2014-11-18 23:35:50      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   java   

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:

解法就是扫一次。不过各种边界条件很容易出错。

bubuko.com,布布扣
 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

重新改写:

bubuko.com,布布扣
 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 解题报告

标签:style   blog   http   io   ar   color   os   sp   java   

原文地址:http://www.cnblogs.com/yuzhangcmu/p/4106602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!