题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
http://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
思路
- 到字符串较少的数据
- 循环比较两个字符串中子串个数
- 如果和前1个子串相比,子串长度大则进行替换
- 将该子串存到另1个字符串数组中
- 循环完毕输出结果
Answer
#include <stdio.h>
#include <string.h>
int main() {
char str1[1000];
char str2[1000];
char ans[1000];
int max=0;
while (scanf("%s\n%s", str1, str2) != EOF) {
//找到字符串较少的数据
if (strlen(str1) > strlen(str2)) {
char temp[1000];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
for(int i=0; i<strlen(str1);i++){
for(int j=0; j<strlen(str2); j++){
int n=0;
while(str1[i+n]== str2[j+n] && str1[i+n]!='\0'){
n++;
}
if(n>max){
max=n;
strcpy(ans,str1+i);
ans[max]='\0';
}
}
}
printf("%s\n",ans);
}
return 0;
}
华为机试刷题 文章被收录于专栏
刷华为机试习题