最长公共前缀

本文介绍了一个用于寻找字符串数组中所有字符串的最长公共前缀的方法。通过逐个字符比较,实现了一个函数来找到并返回这些公共前缀。示例包括了如何处理不同类型的输入,如含有共同前缀的字符串组以及没有共同前缀的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

 

理解:

//1将第一个字符串和第二个比较,获取自左向右都相同的部分做为新的字符串

//2将第一步 字符串作为下面字符串比较
 //重复1,2步骤  最终获取值

class Solution {
    public String longestCommonPrefix(String[] strs) {
        String retStr = "";
        StringBuffer string = new StringBuffer();
        if (strs == null || strs.length ==0) {
            return retStr;
        }else {
            for(int i = 0;i<strs.length ;i++) {
                
                StringBuffer stringBuffer = new StringBuffer(strs[i]);
                if(i == 0) {
                    string = new StringBuffer(strs[0]);//每次初始值
                }else {
                     string = getStringSame(string,stringBuffer);
                }
             
            }
        }
        if(string !=null){
            retStr = string.toString();
        }
        return retStr;
    }
    /**
     * 
     * @param before
     * @param after
     * @return
     */
    public static StringBuffer getStringSame(StringBuffer before,StringBuffer after) {
        StringBuffer ss = new StringBuffer();
        for(int i = 0;i <before.length() ;i++ ) {
            if(after.length() > i ) {
                String substring = before.substring(0, i+1);
                String substring2 = after.substring(0, i+1);
                if(substring.equals(substring2)) {
                    ss = new StringBuffer(substring);
                }else {
                    return ss;
                }
            }
        }
        return ss;
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值