1 条题解

  • 0
    @ 2026-1-30 16:26:03
    #include<bits/stdc++.h>
    using namespace std;
    string s, c;  // s、c:存储输入的两个待匹配字符串
    
    int main() {
        cin >> s >> c;
        // n:s的长度,m:c的长度,max_len:记录最长匹配长度,初始为0
        int n = s.size(), m = c.size(), max_len = 0;
    
        // [1] 查找s的后缀 与 c的前缀 的最长匹配长度
        for(int len=1; len<=n && len<=m; len++){ // len:尝试的匹配长度,最大不超过两字符串最小长度
            string a="", b=""; // a:存储s的最后len个字符,b:存储c的前len个字符
            // 正序提取s的最后len个字符
            for(int i=n-len; i<n; i++){
                a += s[i];
            }
            // 提取c的前len个字符
            for(int j=0; j<len; j++){
                b += c[j];
            }
            // 若两段字符匹配,更新最长匹配长度
            if(a == b){
                max_len = max(max_len, len);
            }
        }
    
        // [2] 查找c的后缀 与 s的前缀 的最长匹配长度
        for(int len=1; len<=n && len<=m; len++){ // len:尝试的匹配长度,最大不超过两字符串最小长度
            string e="", d=""; // e:存储c的最后len个字符,d:存储s的前len个字符
            // 正序提取c的最后len个字符
            for(int i=m-len; i<m; i++){
                e += c[i];
            }
            // 提取s的前len个字符
            for(int j=0; j<len; j++){
                d += s[j];
            }
            // 若两段字符匹配,更新最长匹配长度
            if(e == d){
                max_len = max(max_len, len);
            }
        }
    
        // [3] 输出最终找到的最长匹配长度
        cout << max_len;
        return 0;
    }
    
    • 1

    信息

    ID
    1212
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    2
    已通过
    1
    上传者