題目要求:給一個字符數組,求這個數組的最長公共前綴。 思路:首先判斷這個字符串數組是否為空,若為空則返回空字符串。然后查找這個字符串數組中最短字符串的長度,之后遍歷這個數組,如果這個字符是公共前綴則加入到結果字符串中,繼續遍歷,否則返回當前結果字符串。 貼上代碼:
package leetcode;public class LongestCommonPRefix14 { public static void main(String[] args) { Solution_LCP solu = new Solution_LCP(); String[] strs = {"abca","abc"}; System.out.println(solu.longestCommonPrefix(strs)); }}class Solution_LCP { public String longestCommonPrefix(String[] strs) { int len=strs.length,i=0,min=Integer.MAX_VALUE,j=0; //len為數組長度,i為數組下標,j為數組元素字符串的定位,min為數組中最短的字符串長度 String result="";//result用來接收結果字符串 if(len==0)return result;//如果是空字符數組,則返回空字符串 for(;i<len;i++)//查找字符串數組中最短字符串的長度 { if(strs[i].length()<min)min=strs[i].length(); } //System.out.println("min="+min+" len="+len); while(j<min)//遍歷這個字符串 { i=0;//歸零 while(i<len-1)//遍歷這個字符串數組 { if(strs[i].charAt(j)!=strs[i+1].charAt(j)) return result;//如果有一個不等的字符,則返回result i++; } result+=strs[i].charAt(j);//這個字符是公共前綴,則加入到結果中 //System.out.println(result); j++; } return result; }}總結:從問題中分析規律,首先要考慮特殊情況,以防止數組越界!
新聞熱點
疑難解答