华为oj中级 查找两个字符串a,b中的最长公共子串

描述
查找两个字符串a,b中的最长公共子串。
详细描述:

查找两个字符串a,b中的最长公共子串。

接口设计及说明:

/*******************************************************************
Description : 查找两个字符串a,b中的最长公共子串
Input Param : String stringA, 输入字符串A
String stringB, 输入字符串B
Output Param :
Return Value : 成功返回最大公共子串,失败返回null(如:数据错误)
*******************************************************************/
public static String iQueryMaxCommString(String stringA, String stringB)
{
/* 在这里实现功能,将结果填入输入数组中*/
return null;
}

知识点 字符串
运行时间限制 10M
内存限制 128
输入
输入两个字符串
输出
返回重复出现的字符
样例输入 abcdefghijklmnop abcsafjklmnopqrstuvw
样例输出 jklmnop

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

int main() {
    string s1, s2;
    while (cin >> s1 >> s2){
        if (s1.size() > s2.size()){
            string str;
            str = s1;
            s1 = s2;
            s2 = str;
        }
        string tem;
        int index;
        int len=0;

        int maxLen = 0;
        for (int i = 0; i < s1.size(); i++){
            for (int j = s1.size() - i; j>0; j--){
                tem = s1.substr(i, j);
                if (s2.find(tem) != string::npos){  
                    if (j> maxLen){
                        maxLen = j;
                        index = i;
                    }
                    break;
                }
            }
        }
        cout << s1.substr(index, maxLen) << endl;

    }

    return 0;
}

你可能感兴趣的:(华为oj)