Day10 Longest Common Prefix(1)

tech2025-01-31  16

2020/09/04 1.用二维数组,慢 2.每一列比较,都要比较到最后,慢

初解思路

第一反应就是二维数组,纵向对比。

关于对比方式,想到了char累加,平均等于第一个数组里的值即可(实际上第一个数组里的值等于平均值的话,就出错了。比如[“b”,“a”,“c”])。

乖乖采取挨个对比。

结果:11ms 39.9M --------------- (ΩДΩ)

再想想吧

Code

/** * @Author:lixici * @Date:2020/9/3 22:28 */ public class LongestCommonPrefix { public String longestCommonPrefix(String[] strs) { String res = ""; int width = strs.length; if(width==0) return res; char[][] arr = new char[width][]; for(int i=0;i<width;i++){ if(strs[i].length()==0) return res; arr[i] = strs[i].toCharArray(); } int j = 0; while(j>=0){ int count = 0; if(j>arr[0].length-1){ return res; } char first = arr[0][j]; for(int p=0;p<width;p++){ if(j>arr[p].length-1){ return res; } count+=(arr[p][j]==first?1:0); } if(count==width){ res+=first; j++; }else{ j = -1; } } return res; } public static void main(String[] args) { LongestCommonPrefix lcp = new LongestCommonPrefix(); String[] strs = {"flower","fla","flc"}; System.out.println(lcp.longestCommonPrefix(strs)); } }
最新回复(0)