1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include<iostream> #include<string.h> using namespace std; void calculate(int *ind, char *a, int len) { if(len==0) return ; ind[0]=0; int j = 0 ; for(int i = 1; i < len ; i++ ) { ind[i]=0; if(a[j]==a[i]) { ind[i]=j++; } else { while(j>0) { j=ind[j-1]; if(a[j]==a[i]) { ind[i]=j++; break; } } } cout<<i<<" "<<ind[i]<<endl; } return ; } int findAinB(char *b, char *a, int *indTable, int n, int m) { int j = 0; for(int i = 0 ; i < m ; i++) { if(a[j]==b[i]) { j++; i++; if(j==n) { return i-n+1; } } else { if(j>0) { j=indTable[j-1]; } } } return -1; } int main() { char a[256]; scanf("%s",a); int len = strlen(a); int indTable[len]; calculate(indTable, a, len); char b[256]; cin>>b; cout<<findAinB(b, a, indTable, len, strlen(b))<<endl; return 0; } |
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBjYWxjdWxhdGUoaW50ICppbmQsIGNoYXIgKmEsIGludCBsZW4pIHsKCWlmKGxlbj09MCkgcmV0dXJuIDsKCWluZFswXT0wOwoJaW50IGogPSAwIDsKCWZvcihpbnQgaSA9IDE7IGkgPCBsZW4gOyBpKysgKSB7CgkJaW5kW2ldPTA7CgkJaWYoYVtqXT09YVtpXSkgewoJCQlpbmRbaV09aisrOwoJCX0gZWxzZSB7CgkJCXdoaWxlKGo+MCkgewoJCQkJaj1pbmRbai0xXTsKCQkJCWlmKGFbal09PWFbaV0pICB7CgkJCQkJaW5kW2ldPWorKzsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCQljb3V0PDxpPDwiICI8PGluZFtpXTw8ZW5kbDsKCX0KCXJldHVybiA7Cn0KCmludCBmaW5kQWluQihjaGFyICpiLCBjaGFyICphLCBpbnQgKmluZFRhYmxlLCBpbnQgbiwgaW50IG0pIHsKCWludCBqID0gMDsKCWZvcihpbnQgaSA9IDAgOyBpIDwgbSA7IGkrKykgewoJCWlmKGFbal09PWJbaV0pIHsKCQkJaisrOwoJCQlpKys7CgkJCWlmKGo9PW4pIHsgcmV0dXJuIGktbisxOyB9CgkJfSBlbHNlIHsKCQkJaWYoaj4wKSB7IGo9aW5kVGFibGVbai0xXTsgfQoJCX0KCX0KCXJldHVybiAtMTsKfQoKaW50IG1haW4oKSB7CgljaGFyIGFbMjU2XTsKCXNjYW5mKCIlcyIsYSk7CglpbnQgbGVuID0gc3RybGVuKGEpOwoJaW50IGluZFRhYmxlW2xlbl07CgljYWxjdWxhdGUoaW5kVGFibGUsIGEsIGxlbik7CgljaGFyIGJbMjU2XTsKCWNpbj4+YjsKCWNvdXQ8PGZpbmRBaW5CKGIsIGEsIGluZFRhYmxlLCBsZW4sIHN0cmxlbihiKSk8PGVuZGw7CgkKCXJldHVybiAwOwp9
-
upload with new input
-
result: Success time: 0.02s memory: 2728 kB returned value: 0
aab kaabil
1 0 2 0 -1
-
result: Success time: 0.01s memory: 2728 kB returned value: 0
1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 -1



