前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode题组:第14题-最长公共前缀

LeetCode题组:第14题-最长公共前缀

作者头像
K同学啊
发布2020-04-08 15:30:07
4270
发布2020-04-08 15:30:07
举报

1.题目:最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""

示例 1:

输入: [“flower”,“flow”,“flight”] 输出: “fl”

示例 2:

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


2.我的解答:

#include<stdio.h>
#include<string.h>

//函数申明
char *longestCommonPrefix(char **strs, int strsSize);

char *longestCommonPrefix(char **strs, int strsSize){
	//如果字符串数组为空,直接返回""
    if(strsSize==0) return "";  
    //从所有字符串中第一个字符开始比对 
    for(int i=0;i<strlen(strs[0]);i++){
    	//依次比较第j个字符串中的第i个字符 
        for(int j=1;j<strsSize;j++){
        	//如果比较字符串的第i个字符不同,则直接返回公共前缀 
            if(strs[0][i]!=strs[j][i]){
                strs[0][i]='\0';
                return strs[0];
            }
        }
    }
    return strs[0];
} 

int main(){
	char strs[3][10] = {"flaower","flaow","flaight"};
	
	char *str[3];
	str[0]=strs[0];
	str[1]=strs[2];
	str[2]=strs[2];
	
	printf("%s",longestCommonPrefix(str,3));//1号标记点
	return 0;
} 

3.我遇到的问题

在1号标记点中,我想试着使用下面语句传递参数strs。

printf("%s",longestCommonPrefix(strs,3))//直接使用strs而非str

如果你也这样传递参数,会和我遇到一样的传参问题。这里要注意的是指针的指针,和二维数组的差异;二维数组的地址是连续的,所有成员按顺序排序;而指针的指针只要求指针地址连续,而不要求指针的指针地址连续(有点拗口需要多读几遍)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档