两个字符串中最长公共单词 C语言

题目

请仅编写出一C语言函数char *maxword(char *s, char *t),该函数的功能是求出字符串s与字符串t的最长公共单词(这里,假设两个字符串均由英文字母和空格字符组成);若找到这样的公共单词,函数返回该单词,否则,函数返回NULL。
例如:若s=“This is C programming text”,t=“This is a text for C programming”,则函数返回“programming”。
要求:
1. 函数中不得设置保存单词的存储空间;
2. 给出函数之前请用文字简要叙述函数的基本思想。

答案

#include 
#include 
#include 

int getMaxLengthStr(char *source,int index,int length,char *target){
  int pre=0,len=0;
  for(int i=0;ilen){
        len=currLen;
      }
      pre=i+1;
    }
  }
  return len;
}

char * maxword(char *s,char *t){
 
  int minIndex=0,length=0,pre=0;
  char *res;
  for(int i=0;ilength){
        tempLen=getMaxLengthStr(s,pre,i-pre,t);
        if(tempLen> length){
          length=tempLen;
          minIndex=pre;
        } 
      }
      // 将单词的起始位置置为空格的后一位
      pre=i+1;
    }
    
  }
  if(length>0){
    res=s+minIndex;
    res[length]='\0';
    return res;
  }else{
    return NULL;
  }
  
}


int main(int argc, char *argv[] )
{
  char *s=argv[1];
  char *t=argv[2];
  printf("%s\n",maxword(s,t));
  return 0;
}

➜  C gcc temp.c
➜  C ./a.out "this is c programming text" "this is a text for c programming"
programming
➜  C ./a.out "this is c programming text" "this is damon"
this
➜  C ./a.out "this is c programming text" "damon is cool"
is
➜  C ./a.out "this is c programming text" "cool"
c
➜  C ./a.out "this is c programming text" "damon"
(null)
➜  C

请多指教

你可能感兴趣的:(C语言,原创)