4. 最长公共前缀

4. 最长公共前缀

题目

在这里插入图片描述

题目分析

首先要对字符串数组进行分析,字符串数组元素的最长公共前缀肯定不会超过最小元素长度,并如存在公共前缀则需遍历整个字符串元素,有点像二维数组,最后加上截取字符串加上判空操作就完成啦!

string longestCommonPrefix(vector<string>& strs) {
//string longestCommonPrefix(vector<string>& strs): 这个函数接受一个字符串向量 strs 作为参数,并返回一个字符串作为最长公共前缀。

    if (strs.empty()) {
    //首先检查输入的字符串向量是否为空,如果为空则直接返回空字符串作为最长公共前缀。
        return "";
    }
    

	//使用两个循环嵌套来遍历字符串数组中的每个字符。外部循环控制比较的列数(即每个字符串的当前位置),内部循环用于比较每个字符串当前位置的字符。
	//外部循环从第一个字符串的第一个字符开始比较。
	//内部循环从第二个字符串开始逐个比较每个字符串的当前位置的字符。
	//在内部循环中,检查当前位置字符是否与第一个字符串的对应字符相同,如果不同或者某个字符串已经遍历到末尾,则返回已匹配的最长公共前缀。
	//如果遍历完成,说明所有字符串的前缀都相同,返回第一个字符串作为最长公共前缀。
    
    for (int i = 0; i < strs[0].length(); ++i) {
        for (int j = 1; j < strs.size(); ++j) {
            if (i >= strs[j].length() || strs[j][i] != strs[0][i]) {
                return strs[0].substr(0, i);
                //如果发现不匹配的字符或者某个字符串已经遍历到末尾,则返回截取的最长公共前缀。
            }
        }
    }
    
    return strs[0];
    //如果未发现不匹配的字符,循环结束时返回第一个字符串,因为此时第一个字符串就是整个字符串数组的最长公共前缀

}
    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值