题目
编写一个函数来查找字符串数组中的最长公共前缀。
*
- 如果不存在公共前缀,返回空字符串 “”。
- 示例 1:
- 输入: [“flower”,”flow”,”flight”]
- 输出: “fl”
- 示例 2:
- 输入: [“dog”,”racecar”,”car”]
- 输出: “”
- 解释: 输入不存在公共前缀。
- 说明:
- 所有输入只包含小写字母 a-z 。
- 来源:力扣(LeetCode)
- 链接:https://leetcode-cn.com/problems/longest-common-prefix
- 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解析:采用先保存你一个,然后后面的通过控制指针的方式进行按个遍历,采用暴力解法
依次进行更新最小前缀的方式进行求解,如图
public class longestCommonPrefix {
/**
* @param
* @return
*/
public String longestCommonPrefix(String [] strs) {
//1.拿到每一个数组中的字符串,保存下来
//2.得到字符串中最小的一个长度,遍历此长度下的其余字符串的一个前n项的值是否相等,相等就返回相等的具体的字符,否则返回 ""
if(strs.length == 0 || strs == null){return "";}
String prefix = strs[0];
int minLen = prefix.length();
//找到最小的一个长度,这个,最长前 缀取决于短边
for(int i=1; i<strs.length; i++){
//遍历求最小的长度
if(strs[i].length() < minLen) minLen = strs[i].length();
}
//进行于后面的字符串进行比较,比较得到最长的一个串进行输出
StringBuilder res = new StringBuilder();
for(int j=0; j< minLen; j++){
char ch = strs[0].charAt(j);
for(int k=1; k<strs.length ;k++){
if(ch != strs[k].charAt(j)){
return res.toString();
}
}
res.append(ch);
}
return res.toString();
}
public static void main(String[] args) {
System.out.println(new longestCommonPrefix().longestCommonPrefix(new String[]{"flower","flow","flight"}));
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com