哪位大老帮我调
查看原帖
哪位大老帮我调
1129161
huangchengyi楼主2024/8/17 16:55
#include <bits/stdc++.h>
using namespace std;
string s11[90];
string s12[90];
string s21[90];
string s22[90];

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	string s1;
	string s2;
	cin >> s1 >> s2;
	for (int i = 0; i < s1.size(); i++) {
		if (i == 0) {
			s11[i] += s1[i];//避免下标-1
		} else {
			s11[i] = s11[i - 1] + s1[i];
		}
	}
	for (int i = s1.size() - 1; i >= 0; i--) {//从后往前找
		s12[s1.size() - i - 1] = s1[i] + s12[i + 1];//后边变前边
		//前边后边
	}
	for (int i = 0; i < s2.size(); i++) {
		if (i == 0) {
			s21[i] += s2[i];//避免下标-1
		} else {
			s21[i] = s21[i - 1] + s2[i];
		}
	}
	for (int i = s2.size() - 1; i >= 0; i--) {//也一样
		s22[s2.size() - i - 1] = s2[i] + s22[i + 1];
	}
	int mx = 0;
	for (int i = 0; i < min((int)s1.size(), (int)s2.size()); i++) {
		if (s11[i] == s22[i] || s12[i] == s21[i]) {//是一个字符串
		//的前缀和另一个字符串的后缀的字符串。
			mx = max(mx, i + 1);
		}
	}
	cout << mx;
	return 0;
}

样例不对

2024/8/17 16:55
加载中...