• Longest Common Prefix


    问题描述

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

    算法

    代码一

     1 public String longestCommonPrefix(String [] strs){
     2         if(strs.length==0)
     3             return null;
     4         String s=null;
     5         int prefixLength=0;
     6         boolean b=false;
     7         int minLength=strs[0].length();
     8         for(int i=1;i<strs.length;i++){
     9             if(strs[i].length()<minLength){
    10                 minLength=strs[i].length();
    11             }
    12         }
    13         for(;prefixLength<minLength;prefixLength++){
    14             for(int j=0;j<strs.length;j++){
    15                 if(strs[j].charAt(prefixLength)!=strs[0].charAt(prefixLength)){    
    16                     b=true;
    17                     break;
    18                 }
    19             }
    20             if(b)
    21                 break;
    22         }
    23         if(prefixLength==0)
    24             return null;
    25         s=strs[0].substring(0, prefixLength);
    26         return s;
    27     }

    代码二

    1 public String longestCommonPrefix(String[] strs) {
    2         if (strs.length == 0) return "";
    3         String pre = strs[0];
    4         for (int i = 1; i < strs.length; i++)
    5             while(strs[i].indexOf(pre) != 0)
    6                 pre = pre.substring(0,pre.length()-1);
    7         return pre;
    8     }

    注意事项

    1.如果String s=null,则s.length非法

    2."hamburger".substring(4, 8) returns "urge" 而不是"urger",同时"hamburger".substring(4, 8) returns "" 而不是null

    3.break只能跳出一层循环,如果你的循环是嵌套循环,那么你需要按照你嵌套的层次,逐步使用break来跳出.

    4.不要混了indexOf和charAt。这是 indexOf:if the string argument occurs as a substring within this object, then the index of the first character of the first such substring is returned; if it does not occur as a substring, -1 is returned.例子:"aersdfgh".indexOf("aer")=0。

    5.这道题目中,没有共同前缀返回""而不是返回null。null和""的区别请见http://www.cnblogs.com/hongten/archive/2012/11/08/java_null.html。

  • 相关阅读:
    剑指Offers 题目1384:二维数组中的查找
    剪切板获取图片并上传
    VSCode TSlint + Prettier 实现代码的格式化
    Element Table 合并列
    Linux下安装Redis
    transfer 增加拖拽排序组件封装
    在VSCode中使用Git处理文件冲突(pull不能从服务器拉取代码)
    Vue的 transition在v-for的嵌套下怎么用
    Vant的picker组件放在popup中,导致ref获取不到
    小工具
  • 原文地址:https://www.cnblogs.com/qiaoshanzi/p/4954888.html
Copyright © 2020-2023  润新知