首页 > 代码库 > 华为练习--查找两个字符串a,b中的最长公共子串
华为练习--查找两个字符串a,b中的最长公共子串
程序源代码:
#include <iostream> #include <string> using namespace std; void findCommon(string a,string b); int main() { string a,b; getline(cin,a); getline(cin,b); string temp; if(a.length()<b.length()) { temp=a; a=b; b=temp; } findCommon(a,b); //a为长字符串,b为短字符串 return 0; } void findCommon(string a,string b) //a为长字符串,b为短字符串 { unsigned int len_a=a.length(),len_b=b.length();//两字符串的长度 unsigned int maxlen=0;//最长公共字符串的长度 unsigned int maxindex=0; //最长公共字符串的最后一个字符的位置 for(unsigned int i=b.length()-1;i>1;i--) { for(unsigned int j=0;j<=b.length()-i;j++) { string temp; int t=0; temp=b.substr(j,i); t=a.find(temp); if((t!=-1)&&(maxlen<temp.length()))//匹配成功,并进行比较 { maxlen=temp.length(); maxindex=i+j; } } } cout<<b.substr(maxindex-maxlen,maxlen)<<endl; }程序运行结果:
华为练习--查找两个字符串a,b中的最长公共子串
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。