C语言:分别输入两段字符串,并找出其中的最大公共字符串
2016-01-03 17:10
295 查看
面试中遇到的,后来看到了有大神的解答,有的还是不大明白,就把自己的贴出来:
结果是:
欢迎讨论,共同学习--------一个码农的成长历程
#include<stdio.h> #include<string.h> void m_p_str(char *str_1,char *str_2) { int i,j,k; int str_1_len = strlen(str_1); int str_2_len = strlen(str_2); int index = 0;//记录最大公共字符下标开始的位置 int num = 0;//记录最大公共的个数 for(i=0;i<str_1_len;i++) { for(j=0;j<str_2_len;j++) { if(str_1[i]==str_2[j])//如果有相同的元素,则同时都往后面移动 { for(k=1;str_1[i+k]==str_2[j+k]&&str_2[j+k]!='\0'&&str_1[i+k]!='\0';k++) { if(k>num)//比较看是不是最长的哪一个 { num=k;//如果是,记录其最大公共的个数 index = i;//并记录其下标开始的位置 } } } } } if(num==0)//即最大公共的个数为0 { printf("这两个字符串中无公共字符!\n"); } else { printf("这两个字符串最大公共字符串是:\t"); for(i=0;i<=num;i++) { printf("%c",str_1[index+i]); } printf("\n"); } printf("公共字符从第: %d 个开始\n",index+1); printf("公共字符最多一共有: %d 个\n",num); printf("检索完毕!\n"); } void main() { char str_1[100]; char str_2[100]; printf("请输入字符串一:\t"); gets(str_1); printf("请输入字符串二:\t"); gets(str_2); m_p_str(str_2,str_1); }
结果是:
欢迎讨论,共同学习--------一个码农的成长历程
相关文章推荐
- C++程序设计课后习题及解答(第一章)
- C语言--数组与指针的学习
- C语言实现迷宫求解问题(附源代码)
- C++猜数字游戏的程序,用srand()函数才生随机数
- C++中的类模板详细讲述
- C语言写的控制台关机小程序
- C语言 回调函数
- 蓝桥杯 基础练习 Huffuman树 (C语言)
- C语言之数学计算幂次方
- c++标准库 及 命名空间std
- 黑马程序员-C语言-结构体
- HDU1175连连看【搜索】【剪枝】
- C++小题(九)
- [C++] C++ 计时的例子
- c++ 读文件,fscanf结尾问题
- [C++] c++中二进制文件的创建与使用
- C++标准里 string和wstring
- 职工信息管理模块实现(c语言)
- c语言中的布尔类型
- C语言指针知识点