• 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

     

  • 相关阅读:
    mysql 百万级查询优化
    hibernate N+1
    sql 技巧
    redis做成windows服务
    jsonp 跨域
    maven+spring-data-jpa环境搭建
    通过浏览器地址进行 post get 请求
    spring-data-jpa 新增 修改 删除 查询 分页
    mybatis+springMVC
    java 基于 bootstrap_datagrid 分页
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4106602.html
Copyright © 2020-2023  润新知