最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
初始傻子版本
public static String longestCommonPrefix(String[] strs) { if (strs.length > 1) { String s1 = strs[0]; String s2 = strs[1]; int sum = 0; if (s1.length() <= s2.length()) { sum = s1.length(); } else { sum = s2.length(); } String str = ""; for (int i = 0; i < sum; i++) { char ch1 = s1.charAt(i); char ch2 = s2.charAt(i); if (ch1 == ch2) { str = str + ch1; } else { break; } } for (int j = 2; j < strs.length; j++) { String str1 = strs[j]; String str2 = ""; int sum1 = 0; if (str1.length() <= str.length()) { sum1 = str1.length(); } else { sum1 = str.length(); } for (int z = 0; z < sum1; z++) { char ch1 = str.charAt(z); char ch2 = str1.charAt(z); if (ch1 == ch2) { str2 = str2 + ch1; } else { break; } } str = str2; } return str; } else if(strs.length ==0){ return ""; } else { return strs[0]; } }
更改版本
public String longestCommonPrefix(String[] strs) { if(strs.length==0)return "";//字符串数组为0的直接返回空 String s=strs[0]; for (String string : strs) { while(!string.startsWith(s)){//以s为开头的不执行循环语句 if(s.length()==0)return ""; //公共前缀不匹配就去掉最后一个字母 s=s.substring(0,s.length()-1); } } return s; }

浙公网安备 33010602011771号