Longest Common Prefix Total Accepted: 47436 Total Submissions: 182575
Write a function to find the longest common prefix(前缀) string amongst an array of strings.
Hide Tages String
翻译:编写一个函数去查找在字符串数组中的最长公共前缀的字符
尝试一(失败),代码如下:
public static String longestCommonPrefix1(String[] strs) { //temp为中间量 String temp=strs[0]; if(strs==null||strs.length==0) { return ""; } for (int i = 0; i < strs.length; i++) { for (int j = i; j < strs.length; j++) { if(strs[i].charAt(0)!=strs[j].charAt(0)) { return ""; } } } for (int i = 1; i < strs.length; i++) { int len=temp.length()<strs[i].length()?strs[0].length():strs[i].length(); int j; for ( j = 0; j<len; j++) { char first=temp.charAt(j); char current=strs[i].charAt(j); if(first!=current) { break; } } temp=strs[0].substring(0,j); } return temp; }
尝试二(成功),代码如下:
public static String longestCommonPrefix(String[] strs) { int len = strs.length; if(len == 0) return ""; if(len == 1) return strs[0]; int i = 1; String temp = strs[0]; while(i < len) { int minLen = Math.min(temp.length(), strs[i].length()); if(minLen == 0) return ""; int j = 0; while(j < minLen) { if(temp.charAt(j) == strs[i].charAt(j)) { j++; } else { if(j == 0) temp = ""; break; } } temp = temp.substring(0,j); i++; } return temp; }
心得:尝试一与尝试二的解题思想是一样,但是尝试一未能避开一些一般性的测试输入,如:{a,b,c} ,这个我使用了两个for循环进行遍历进行排除,太麻烦。 {“”,“”,“”}三个空字符串,没能排除,于是使用尝试二的方法,成功避开一些意外输入。
解题思想:使用中间变量temp将出现的公共String进行sub,即抽取出来。然后依次往下进行循环遍历即可。
时间: 2024-10-02 14:40:46