1 条题解
-
0
#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
- 上传者