Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. class Solution {
  2. public:
  3.    
  4.     struct BTree {
  5.         unordered_map<int, unique_ptr<BTree>> children;
  6.     };
  7.    
  8.     int findLength(vector<int>& A, vector<int>& B) {
  9.         BTree btree;
  10.         for (int i = 0; i < A.size(); ++i) {
  11.             BTree *nodelink = &btree;
  12.             for (int j = i; j < A.size(); ++j) {
  13.                 if (nodelink->children.find(A[j]) == nodelink->children.end()) {
  14.                     nodelink->children[A[j]].reset(new BTree());
  15.                 }
  16.                 nodelink = nodelink->children[A[j]].get();
  17.             }
  18.         }
  19.        
  20.         int maxsize = 0;
  21.         for (int i = 0; i < B.size(); ++i) {
  22.             int currentsize = 0;
  23.             BTree *nodelink = &btree;
  24.             for (int j = i; j < B.size(); ++j) {
  25.                 if (nodelink->children.find(B[j]) != nodelink->children.end()) {    
  26.                     nodelink = nodelink->children[B[j]].get();
  27.                     currentsize++;
  28.                 } else {
  29.                     break;
  30.                 }
  31.             }
  32.             if (currentsize > maxsize) maxsize = currentsize;
  33.         }
  34.        
  35.         return maxsize;
  36.     }
  37. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement