leetcode:Longest Common Prefix(取最长字符串前缀)

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

写一个功能public String longestCommonPrefix(String[] strs)找出字符串数组的最长公共前缀。

算法思路:① 首先分析最长公共字符串长度一定不会超过最短字符串的长度,所以先找出最短字符串的长度minlength。

     ② 然后从第一个字符串挨个取字母,加到Str中,然后判断数组其他字符串的前缀是否和str相同 个数不会超过minlength,就能判断该字符串数组最长前缀。

代码设计:

class Solution {
    public String longestCommonPrefix(String[] strs) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
       String str="";
   		if(strs.length==0)
   			return str;
       int minlength=lengthofSmallString(strs);  //找到最小字符串长度
      for(int count=0;count<minlength;count++){//最长前缀的长度一定不会超过minlength
    	     str+=strs[0].charAt(count);    //挨个取第一个字符串的字母,然后判断其他字符串前缀是不是str
        for(int i=0;i<strs.length;i++){
        	if(!isContains(strs[i], str)){
        		str=str.substring(0, count);
        		return str;
        	}
        }
        
      }
    	return str;
    }
    public Boolean isContains(String str1,String str2){//这个函数的作用是判断str2是否是str1的前缀
    	for(int i=0;i<str2.length();i++){
    		if(str1.charAt(i)!=str2.charAt(i))
    			return false;
    	}
    	return true;
    }
    public int lengthofSmallString(String[] strs){  //这个函数的作用找到字符串数组的最小字符串长度并返回。
    		int min=Integer.MAX_VALUE;
    		for(int i=0;i<strs.length;i++){
    			if(strs[i].length()<min){
    				min=strs[i].length();
    			}
    		}
    	return min;
    	}
}
原文地址:https://www.cnblogs.com/zhaolizhen/p/CommonPrefix.html