本文主要是介绍算法------------ 最长公共前缀,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例 1:输入: ["flower","flow","flight"]
输出: "fl"
示例 2:输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:所有输入只包含小写字母 a-z 。来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的解决方法:
class Solution {public String longestCommonPrefix(String[] strs) {if (strs == null || strs.length == 0) {return "";}if (strs.length == 1){return strs[0];}String str = strs[0];StringBuffer sb = new StringBuffer();out : for (int i = 0; i < str.length(); i++) {char c = str.charAt(i);for (int j = 1; j < strs.length; j++) {if (i >= strs[j].length()) {break out;}if (c != strs[j].charAt(i)) {break out;}}sb.append(c);}return sb.toString();}
}
网上的解决方法:
class Solution {public String longestCommonPrefix(String[] strs) {if(strs==null || strs.length<1){return "";}if(strs.length==1){return strs[0];}//find the shortest stringint shortest=0;int len=strs[0].length();for (int i = 0; i < strs.length; i++) {if(len > strs[i].length()){len=strs[i].length();shortest=i;}}//find the longest common prefixString sub=strs[shortest];for (int i = 0; i < strs.length; i++) {while(strs[i].indexOf(sub)!=0){sub=sub.substring(0, sub.length()-1);}// 这里我优化了一下,如果是空字符串,没必要再循环了。if (sub.equals("")) {break;}}return sub;}
}
总结:
练习算法有长进,学到了东西,写代码,就写最优的。
这篇关于算法------------ 最长公共前缀的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!