不让我用find函数...那我自己写一个?
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <map>
using namespace std;
typedef long long int LL;
int main() {
string a, b;
cin >> a >> b ;
int maxn = 0;
for(int i = 0; i < a.size(); i++) {
int k = 1;
while(b.find(a.substr(i, k)) != string::npos && i+k < a.size()) {
if(maxn < k) maxn = k;
k++;
}
}
int flag = 0;
for(int i = 0; i < a.size(); i++) {
if(b.find(a.substr(i, maxn)) != string::npos) {
cout << a.substr(i, maxn) << '\n' ;
++flag;
return 0;
}
}
if(flag == 0) {
cout << "NO" << '\n' ;
}
return 0;
}
我认为是find函数不让用...然后...
#include <iostream>
#include <string>
#include <cstring>
#include <cmath>
#include <iomanip>
#include <map>
using namespace std;
typedef long long int LL;
int FIND(string b, string a) {
for(int i = 0; i < b.size(); i++) {
int k = 0;
while(i+k < b.size() && k < a.size() && b[i + k] == a[k])
++k;
if(k == a.size()) {
return 1;
}
}
return 0;
}
int main() {
string a, b;
cin >> a >> b ;
int maxn = 0;
for(int i = 0; i < a.size(); i++) {
int k = 1;
while(i+k < a.size() && FIND(b, a.substr(i, k))) {
if(maxn < k) maxn = k;
k++;
}
}
if(!maxn) {
cout << "NO" << '\n' ;
return 0;
}
for(int i = 0; i < a.size(); i++) {
if(FIND(b, a.substr(i, maxn))) {
cout << a.substr(i, maxn) << '\n' ;
return 0;
}
}
return 0;
}
这怎么也不行啊!
靠,彻底用C语言写了下,写对了!
#include <stdio.h>
#include <string.h>
int pos[105];
int main() {
char a[105], b[105];
gets(a); gets(b);
int maxn = 0;
for(int i = 0; i < strlen(a); i++) {
for(int j = 0; j < strlen(b); j++) {
int k = 0;
if(a[i] == b[j]) {
while(i+k < strlen(a) && j+k < strlen(b) && a[i + k] == b[j + k]) {
++k;
}
if(maxn < k) maxn = k;
if(pos[i] < k) pos[i] = k;
}
}
}
if(maxn == 0) {
printf("NO\n"); return 0;
}
for(int i = 0; i < 100; i++) {
if(pos[i] == maxn) {
for(int j = i; j < i + maxn; j++) {
putchar(a[j]);
}
putchar('\n');
return 0;
}
}
return 0;
}