Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- struct BTree {
- unordered_map<int, unique_ptr<BTree>> children;
- };
- int findLength(vector<int>& A, vector<int>& B) {
- BTree btree;
- for (int i = 0; i < A.size(); ++i) {
- BTree *nodelink = &btree;
- for (int j = i; j < A.size(); ++j) {
- if (nodelink->children.find(A[j]) == nodelink->children.end()) {
- nodelink->children[A[j]].reset(new BTree());
- }
- nodelink = nodelink->children[A[j]].get();
- }
- }
- int maxsize = 0;
- for (int i = 0; i < B.size(); ++i) {
- int currentsize = 0;
- BTree *nodelink = &btree;
- for (int j = i; j < B.size(); ++j) {
- if (nodelink->children.find(B[j]) != nodelink->children.end()) {
- nodelink = nodelink->children[B[j]].get();
- currentsize++;
- } else {
- break;
- }
- }
- if (currentsize > maxsize) maxsize = currentsize;
- }
- return maxsize;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement