Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<set>
- using namespace std;
- typedef long long int ll;
- ll const Pr = 98765431;
- int min(int a,int b){
- return (a < b ? a : b);
- }
- int main()
- {
- char str1[2010];
- char str2[2010];
- ll value[30];
- value[0] = Pr;
- for(int i = 1 ; i <= 27 ; i ++){
- value[i] = value[i-1] * Pr;
- }
- scanf("%s %s",str1,str2);
- int len1 = strlen(str1);
- int len2 = strlen(str2);
- int minl = min(len1,len2);
- int ans = 0;
- for(int size = 1 ; size <= minl ; size ++){
- set<ll> table;table.clear();
- ll hs = 0;
- for(int i = 0 ; i < len1 ; i ++ ){
- hs += value[str1[i] - 'A'];
- if(i >= size - 1){
- // if(table.count(hs) == 0){
- table.insert(hs);
- // }
- hs -= value[str1[i-size+1]-'A'];
- }
- }
- hs = 0;
- for(int i = 0 ; i < len2 ; i++){
- hs += value[str2[i]-'A'];
- if(i >= size-1){
- if(table.count(hs) == 1){
- ans = size;
- break;
- }
- hs -= value[str2[i-size+1]-'A'];
- }
- }
- }
- printf("%d",ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement