/**
*
* 编写一个函数来查找字符串数组中的最长公共前缀。
* <p>
* 如果不存在公共前缀,返回空字符串 ""。
*
*/
//思路分析:
//1. 要查找字符串数组中最长公共前缀,采用化繁为简的思路
//2. 遍历这个字符串数据,每次比较两个字符串的公共前缀并记录
//3. 则在一次遍历结束后,每个字符串都被比较过
public String longestCommonPrefix(String[] strs) {
//数据校验
if (strs == null || strs.length == 0) {
return "";
}
//拿出字符串数组中的第一个字符串作为参考
String str = strs[0];
//遍历剩下的字符串并依次比较
for (int i = 1; i < strs.length; i++) {
//将两个字符串比较的结果继续存储到str字符串中
str = twoLongestCommonPrefix(str, strs[i]);
//如果在比较的过程中发现str已经是空的,则直接返回空串
if (str == ""){
return "";
}
}
//返回最长公共子串
return str;
}
//编写方法查找两个字符串的最长公共子串
public String twoLongestCommonPrefix(String str1, String str2) {
//数据校验
if (str1 == null || str2 == null) {
return "";
}
//定义变量保存两个字符串的最小长度
int len = Math.min(str1.length(), str2.length());
//定义一个index索引用来保存两个字符串的最长公共子串的长度
int index = 0;
for (int i = 0; i < len; i++) {
if (str1.charAt(i) == str2.charAt(i)) {
index++;
} else {
break;
}
}
//返回最长公共子串
return str1.substring(0, index);
}
原文:https://www.cnblogs.com/mx-info/p/14747156.html