【刷题】最长公共前缀

该文章介绍了如何使用竖列扫描的方法解决LeetCode上的最长公共前缀问题。从上到下、从前到后遍历二维数组,一旦发现不匹配的字符则将其置为。这种方法的关键在于调整遍历顺序,由外层的列遍历和内层的行遍历构成,实现了对每一列的处理。
摘要由CSDN通过智能技术生成

        这道题是一个竖列搜索的题目,较简单,但是需要切换常用的遍历二维数组思路。

目录

前言

一、实现思想

二、具体实现

总结


前言

上题目: 

力扣icon-default.png?t=N0U7https://leetcode.cn/problems/longest-common-prefix/description/?orderBy=most_votes&languageTags=c


一、实现思想

        从上到下,从前到后依次遍历,如果相同就接着遍历下一行,如果不同就直接将目前遍历到的字符置为'\0'。

二、具体实现

代码如下(示例):

char * longestCommonPrefix(char ** strs, int strsSize){
    // 外层是先列后行
    for(int i = 0; i < strlen(strs[0]); i++)
    {
        for(int j = 1; j < strsSize; j++)
        {
            // 竖列扫描,内层就是先行后列
            if(strs[0][i] != strs[j][i])
            {
                strs[0][i] = '\0';
            }
        }
    }
    return strs[0];
}


总结

        竖列扫描就是从上到下,依次对每个指针元素进行遍历,宏观上看是将这个二维数组的所有元素放在同一竖列上,然后进行从左往右的遍历。

        这种遍历方式的不同指出在于for循环变量的控制上:

        因为每次小遍历的是每一列的内容,所以需要改变的是行数,第二层循环所以就放的是行,所以在写单个元素时候,不是[i][j]而是[j][i],仍然是[行][列],但是是因为后遍历的是行(也即j),所以变成了j在前。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值