zoukankan      html  css  js  c++  java
  • LeetCode: Longest Common Prefix 解题报告

    Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings.

    Show Tags

    SOLUTION 1:

    解法很直观。先找到最小长度,然后逐个字母遍历,同时逐个遍历所有的字符串。注意各种小细节:

    1. break的时候,应该返回上一个索引指向的子串。

    2. 如果没有break,表示minlen长度的字串就是最大pre.

     1 public class Solution {
     2     //http://blog.csdn.net/fightforyourdream/article/details/14642079
     3     public String longestCommonPrefix(String[] strs) {
     4         if (strs == null || strs.length == 0) {
     5             // bug 2: should not return null.
     6             return "";
     7         }
     8         
     9         // Find out the shortest length.
    10         String s0 = strs[0];
    11         int len = s0.length();
    12         for (String s: strs) {
    13             len = Math.min(len, s.length());
    14         }
    15         
    16         // The index of the character which is examing.
    17         // Bug 3: 当不会break的时候,结果是错的
    18         // Bug 4: forget to add int i = 0;
    19         for (int i = 0; i < len; i++) {
    20             // Bug 1: forget to write charAt(i);
    21             char c = s0.charAt(i);
    22             for (int j = 0; j < strs.length; j++) {
    23                 if (strs[j].charAt(i) != c) {
    24                     // Bug 5: write substring to sbustring
    25                     return s0.substring(0, i);
    26                 }                
    27             }
    28         }
    29         
    30         // Never break, means strs[0].0-len is the solution.
    31         return s0.substring(0, len);
    32     }
    33 }
    View Code

    2015.1.2 redo:

     1 public class Solution {
     2     public String longestCommonPrefix(String[] strs) {
     3         String ret = "";
     4         if (strs == null || strs.length == 0) {
     5             return ret;
     6         }
     7         
     8         int minLen = Integer.MAX_VALUE;
     9         for (String str: strs) {
    10             minLen = Math.min(str.length(), minLen);
    11         }
    12         
    13         for (int i = 0; i < minLen; i++) {
    14             for (int j = 1; j < strs.length; j++) {
    15                 if (strs[0].charAt(i) != strs[j].charAt(i)) {
    16                     return strs[0].substring(0, i);
    17                 }
    18             }
    19         }
    20         
    21         return strs[0].substring(0, minLen);
    22     }
    23 }
    View Code

    GITHUB:

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

  • 相关阅读:
    ERP系统模块完全解析──主生产计划MPS
    样式兼容问题
    Js中 关于top、clientTop、scrollTop、offsetTop
    C# 中的委托和事件
    面试题大全
    常用Web服务
    CSS兼容IE6,IE7,FF的技巧
    C#图片处理基本应用(裁剪,缩放,清晰度,水印)
    数据库导入excel数据出现问题解决方案
    JS调用webservice的通用函数
  • 原文地址:https://www.cnblogs.com/yuzhangcmu/p/4176905.html
Copyright © 2011-2022 走看看