• Longest Common Prefix 解答


    Question

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

    Solution

    第一思路是用Trie,但是对于一道Easy类别的题目,用Trie显然是杀鸡用牛刀。

    于是我们可以参考到构造Trie的过程,来找这个最长prefix。

    我们先用String array中第一个String初始化Pre,然后遍历剩下的每一个String,找重合的终点,删除不重合的部分。

     1 public class Solution {
     2     public String longestCommonPrefix(String[] strs) {
     3         if (strs == null || strs.length < 1) {
     4             return "";
     5         }
     6         int length = strs.length;
     7         int initLen = strs[0].length();
     8         StringBuilder result = new StringBuilder(initLen);
     9         for (int i = 0; i < initLen; i++) {
    10             result.append(strs[0].charAt(i));
    11         }
    12         for (int i = 1; i < length; i++) {
    13             String curString = strs[i];
    14             initLen = result.length();
    15             for (int j = 0; j < initLen; j++) {
    16                 if (j < curString.length() && curString.charAt(j) == result.charAt(j)) {
    17                     continue;
    18                 }
    19                 result.delete(j, initLen);
    20                 break;
    21             }
    22         }
    23         return result.toString();
    24     }
    25 }

    更简单的方法是用String.indexOf()的方法来判断重合终点。

     1 public class Solution {
     2     public String longestCommonPrefix(String[] strs) {
     3         if (strs == null || strs.length < 1) {
     4             return "";
     5         }
     6         int length = strs.length;
     7         int initLen = strs[0].length();
     8         String prev = strs[0];
     9         for (int i = 0; i < length; i++) {
    10             String curString = strs[i];
    11             while (curString.indexOf(prev) != 0) {
    12                 prev = prev.substring(0, prev.length() - 1);
    13             }
    14         }
    15         return prev;
    16     }
    17 }
  • 相关阅读:
    centos下安装nethogs
    Nginx+Tomcat反向代理利用certbot实现https
    Mysql主从复制读写分离
    短链接及关键字过滤ac自动机设计思路
    接口访问加密和限频方案
    算法笔记
    redis原理及使用
    memcached原理
    Spring中AOP的两种代理方式(Java动态代理和CGLIB代理-转载
    基于注解的Spring AOP的配置和使用--转载
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4935131.html
Copyright © 2020-2023  润新知