cocobear9  
一枚普通的zisuer(lll¬ω¬),努力每天多学一点点

思路:水平横扫

#include<stdio.h>
#include<stdlib.h>
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<strsSize;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<str.length;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
}

}

posted on 2020-04-09 20:56  cocobear9  阅读(671)  评论(0)    收藏  举报