• 找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet


    // 最大子字符串.cpp : 定义控制台应用程序的入口点。
    //
    //找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"
    
    #include <iostream>
    #include <string>
    using namespace std;
    
    string MaxSameStr(string str1,string str2)
    {
    	string result;
    	int max=0,first;
    	int len=0;//相同字符串的长度
    	int k,q;
    	
    	//穷举
    	for(unsigned int i=0;i<str1.length();i++)
    		for(unsigned int j=0;j<str2.length();j++)
    		{
    			unsigned int k=i;
    			unsigned int q=j;
    			if (str1[k]==str2[q])//发现相同的字母
    			{
    				first=k;  //标记起始位置
    				while(str1[k]==str2[q]&&q<str2.length()&&k<str1.length())//继续比较后面的是否也相同
    				{
    					k++;q++;
    				}
    				len=k-first;
    				if(len>max)//是否为目前最长字符串
    				{
    					max=len;
    					string temp(str1,first,len);
    					result=temp;
    				}
    			}
    		}
    		return result;
    }
    int main()
    {
    	string Str1,Str2;
    	cout<<"请输入两个字符串"<<endl;
    	cin>>Str1>>Str2;
    	cout<<"结果为"<<MaxSameStr(Str1,Str2)<<endl;
    	return 0;
    }
    //特别是这句while(str1[k]==str2[q]&&q<str2.length()&&k<str1.length())要加上后面的q<str2.length()&&k<str1.length(),不然会导致字符串越界。。
  • 相关阅读:
    053-113
    053-262
    053-294
    053-494
    053-60
    053-105
    053-102
    053-218
    【转】LiveWriter插入高亮代码插件介绍 基于SyntaxHighighter
    windows live Writer test
  • 原文地址:https://www.cnblogs.com/zhangdongsheng/p/1952917.html
Copyright © 2020-2023  润新知