zoukankan      html  css  js  c++  java
  • 【LeetCode】Longest Common Prefix

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

    java code : 预处理出最短串与任意一字符串的公共前缀,用StringBuilder保存,再去遍历剩余字符串,从尾处开始推。

    复杂度O(m * n)  m : length of the arrays, n :length of the prefix

    public class Solution {
        public String longestCommonPrefix(String[] strs) {
            // IMPORTANT: Please reset any member data you declared, as
            // the same Solution instance will be reused for each test case.
             int numofstr = strs.length;
    		 if(numofstr < 1)
    			 return new String("");
    		 if(numofstr == 1)
    			 return strs[0];
    		 StringBuilder res = new StringBuilder();
    		 String minlen = strs[0];
    		 int indexmin = 0;
    		 for(int i = 1; i < numofstr; i++)
    		 {
    			 if(minlen.length() > strs[i].length())
    			 { minlen = strs[i];indexmin = i;}
    		 }
    		 String str1 = strs[0];
    		 String str2 = strs[1];
    		 int index2 = 1;
    		 if(minlen.equals(strs[0]))
    		 {
    			 str1 = minlen;
    			 str2 = strs[1];
    		 }
    		 else
    		 {
    			 str1 = minlen;
    			 str2 = strs[0];
    			 index2 = 0;
    		 }
    		 int i = 0, j = 0;
    		 while(i < str1.length() && j < str2.length())
    		 {
    			 if(str1.charAt(i) == str2.charAt(j))
    			 {
    				 res.append(str1.charAt(i));
    				 i++;j++;
    				 continue;
    			 }
    			 break;
    		 }
    		 if(numofstr < 3 || res.length() == 0)
    			 return res.toString();
    		 for(int k = 0; k < numofstr; k++)
    		 {
    			 if(k == indexmin || k == index2)
    				 continue;
    			 int len = res.length();
    			 String cur = strs[k];
    			 while(len > 0 && (cur.charAt(len - 1) != res.charAt(len - 1)))
    			 {
    				 res.deleteCharAt(len - 1);
    				 len--;
    			 }
    			 
    		 }
    		 return res.toString();
            
        }
    }


  • 相关阅读:
    一道编程题: 在1~n之间选择若干个数,使其和为m
    关于raft算法
    程序员算法基础——动态规划
    c++中两个类互相引用的问题
    c++ 之模板进阶
    jmeter分布式操作-远程启动功能探索
    linux下安装不同版本的jdk
    Jmeter插件监控服务器性能
    测试开发面试-技术持续累积
    python:Jpype安装和使用
  • 原文地址:https://www.cnblogs.com/james1207/p/3395514.html
Copyright © 2011-2022 走看看