求两个字符串公共前缀c语言,C语言实现串最长公共前缀

本文介绍了一种使用C语言实现的寻找字符串数组中最长公共前缀的方法,并提供了详细的代码示例。此外还附带了Java语言版本的实现代码供对比理解。

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

思路:水平横扫

#include

#include

char * longestCommonPrefix(char ** strs, int strsSize);

int main()

{

char ** str ;

char * temp ;

int i=0,k,len=0 ;

str =(char**)malloc(sizeof(char)*1000);

for(i=0;i<1000;i++)

str[i]=(char*)malloc(sizeof(char)*1000);

i=0;

while(scanf("%s",str[i])!=EOF)

{

i++;

}

/*

printf("%p %p\n",str[0],str[1]);

printf("%p %p\n",&str[0],&str[1]);*/

temp=longestCommonPrefix(str,i);

printf("%s",temp);

// temp = str[0];

// printf("%c",*(temp+2));// -->第一个数组的第一个元素

}

// 最长公共前缀

char * longestCommonPrefix(char ** strs, int strsSize){

int i,j;

if(strsSize==0) return "" ;

char * tmp = *(strs+0);

for(i=1;i

{

for(j=0;tmp[j]!='\0'&&strs[i][j]!='\0';j++)

{

if(tmp[j]!=strs[i][j])

{

break;

}

}

tmp[j]='\0';

if(tmp == NULL)

{

return "" ;

}

}

return tmp ;

}

附上JAVA 代码//感觉更加简单

package arrString;

public class ArrString {

public static void main(String[] args) {

// TODO Auto-generated method stub

String [] str = {"leet",

"leetcode",

"lee",

"leetcs"};

String prifix =str[0];

for(int i=1;i

{

System.out.println(str[i].indexOf(prifix));

while(str[i].indexOf(prifix)!=0)

{

prifix =prifix.substring(0, prifix.length()-1);

if(prifix.isEmpty()) break ;

}

}

System.out.println(prifix);

System.out.println(str.length);//3

System.out.println(str[0]);//leet

}

}

标签:tmp,前缀,prifix,int,C语言,char,temp,str,最长

来源: https://www.cnblogs.com/cocobear9/p/12669512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值