题目:
Write a function to find the longest common prefix string amongst an array of strings.
写一个函数找到多个字符串中最长前缀。
描述方法:
假设字符串数组为 { "12345" , "1246" , "1248"},最长前缀为 “12”。
字符串数组声明 char * str[]= { "12345" , "1246" , "1248"};
str[] 表明这是一个数组,char* 表明类型为char*。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* longestCommonPrefix(char** strs, int strsSize)
{
if(strsSize==0)
return "";
char ** s;
s=strs;//s指向*strs
int strsl=strlen(*s);//多个字符串中的最短长度
int i;
for(i=0;i<strsSize;i++)
{
if(strlen(*s)<strsl)
{
strsl=strlen(*s);
}
s++;
}
char * prefix=(char *)malloc(sizeof(char)*(strsl+1));
int j;
char tem;
s=strs;//s指向*strs
for(i=0;i<strsl;i++)
{
tem=strs[0][i];
for(j=1;j<strsSize;j++)
{
if(tem!=strs[j][i])
break;
}
if(j==strsSize)
prefix[i]=tem;
else
break;
}
prefix[i]='\0';
return prefix;
}
void main()
{
char *strs[] = { "12345" , "1246" , "1248"};
//for(int i=0;i<3;i++)
//{
// printf("%s ",strs[i]);
//}
char * prefix;
prefix=longestCommonPrefix(strs, 3);
printf("%s\n",prefix);
}