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; } }