LeetCode14.最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入:strs = ["flower","flow","flight"]

输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]

输出:""

解释:输入不存在公共前缀。

代码:class Solution {
    public String longestCommonPrefix(String[] strs) {

//定义了一个方法 longestCommonPrefix ,它的作用是在给定的一个字符串数组中找出最长公共前缀。

接受一个字符串数组 strs  作为参数,返回值类型是 String ,即返回一个字符串。

if (strs==null||strs.length==0){
            return "";
        }

int lens=strs.length,n=strs[0].length(); 

//定义了两个整型变量, lens  用来存储字符串数组 strs  的长度,即数组中字符串的个数; n  用来存储数组中第一个字符串 strs[0]  的长度。

         int i,j; 

        char c;

//用于存储当前正在比较的字符。

        for (i=0;i<n;i++){
            c=strs[0].charAt(i);

//在每次循环中,通过 strs[0].charAt(i)  获取第一个字符串中索引为 i  的字符,并将其赋值给变量 c 。这个循环的目的是从第一个字符串的第一个字符开始,逐个检查每个字符是否是所有字符串的公共前缀部分。
            for (j=1;j<lens;j++){
                if (strs[j].length()==i||strs[j].charAt(i)!=c){
                    return strs[0].substring(0,i);

//这段代码的作用是:逐个检查所有字符串的第 i  个字符是否与基准字符 c  相同。如果发现某个字符串的长度不够(即第 i  个字符不存在),或者字符不匹配,则立即返回当前找到的最长公共前缀。

- 条件一: strs[j].length() == i

当前字符串长度不够,无法匹配到第  i  个字符,说明公共前缀只能到  i-1  位置。

比如检查第  i=3  个字时,发现某个朋友名字只有2  个字(如「张小」),那第  3  个字不存在

- 条件二: strs[j].charAt(i) != c

字符不匹配,公共前缀只能到  i-1  位置。

逻辑关系: || (或)

- 只要满足任意一个条件,就触发返回。

substring

-  substring(0,i) :截取第一个字符串  strs[0]  从索引  0  到  i-1  的子串(因为 Java 的  substring  是左闭右开)。
 
- 举例:如果  i=2 ,则返回前两个字符(索引  0  和  1 )。
                }
            }
            
        }
        return strs[0];

如果外层循环顺利结束(即没有提前返回),说明第一个字符串的所有字符都是所有字符串的公共前缀,所以直接返回第一个字符串 strs[0] 。
    }
}

总结
 
这段代码通过两层嵌套的  for  循环,以第一个字符串为基准,逐个字符地检查其他字符串,从而找出字符串数组中的最长公共前缀。在检查过程中,通过条件判断及时返回已经找到的最长公共前缀。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值