Write a function to find the longest common prefix string amongst an array of strings.
Example 1:
Input: ["flower","flow","flight"] Output: "fl"
我的思路:
典型的查相同值的方法。想不出来简便的方法,先实现再说,最简单的想法,将第一个字符串分解,例如分解为 f ,fl ,flo,flow,flowe,这样的数据,然后循环其他的数据,是否包含分解的字符串,反复提交代码, 发现题目讲的也太模糊了,一开始的思路完全出错误了,例如["c","acc","ccc"] 输出应该是 "", 这样题目反而简单起来了, 只要依次比较所有数组的前几个字符是否相等即可。更换思路,找出字符串长度最短的字符串,循环,依次判断是否相等。下面给出代码。
public static String longestCommonPrefix(String[] strs) { if(strs.length == 0) return ""; if(strs.length == 1) return strs[0]; if(strs[0].equals("")) return strs[0]; String res=""; for (int i = 1; i <= strs[0].length(); i++) { for (int j = 1; j < strs.length; j++) { if(strs[j].length()<i) return res; System.out.println(strs[j]+"--"+strs[j].substring(0,i)+"---"+strs[0].substring(0,i)); if(!strs[j].substring(0,i).equals(strs[0].substring(0,i))) return res; } res=strs[0].substring(0,i); } return res; }
提交代码:速度还是可以的,但是字符串太占内存了,再来看看别人是怎么实现的。
Runtime: 3 ms, faster than 77.57% of Java online submissions for Longest Common Prefix.
Memory Usage: 39.3 MB, less than 5.16% of Java online submissions for Longest Common Prefix.