14. 最长公共前缀
程序员文章站
2022-03-11 12:52:39
...
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
代码+注释+思路:
class Solution {
public String longestCommonPrefix(String[] strs) {
/**
* 遍历所有字符串,都从第一个字符开始验证,如果相同继续往后验证,不同直接跳出
*
*/
//如果数组为null或者数组中没有元素,直接返回""
if (strs==null || strs.length==0)
{
return "";
}
//数组长度为1,直接返回唯一字符串
if (strs.length==1)
{
return strs[0];
}
int midLen=strs[0].length();
//前缀字符串的最后一个字符的索引
int result=0;
//当有不相同的字符时,设置为true
boolean notEqual=false;
//找到最短字符串的长度,这样就知道最多需要比较多少个字符
for (String str:strs
) {
int len=str.length();
if (midLen>len)
{
midLen=len;
}
}
for (int i = 0; i < midLen; i++) {
char firstChar=strs[0].charAt(i);
for (int j = 1; j < strs.length; j++) {
if (firstChar!=strs[j].charAt(i))
{
notEqual=true;
break;
}
}
//当notEqual为true时证明已经有不同的字符了,直接跳出循环
if (notEqual)
{
break;
}
result++;
}
if (result>0) {
return strs[0].substring(0, result);
}else {
return "";
}
}
}