1. 程式人生 > >Rrui的Leetcode刷題筆記(七)

Rrui的Leetcode刷題筆記(七)

388. 檔案的最長絕對路徑

class Solution {
public:
    int lengthLongestPath(string input) {
        int res = 0, n = input.size(), level = 0;
        unordered_map<int, int> m {{0, 0}};
        for (int i = 0; i < n; ++i) {
            int start = i;
            while (i < n && input[i] != '\n' && input[i] != '\t') ++i;
            if (i >= n || input[i] == '\n') {
                string t = input.substr(start, i - start);
                if (t.find('.') != string::npos) {
                    res = max(res, m[level] + (int)t.size());
                } else {
                    ++level;
                    m[level] = m[level - 1] + (int)t.size() + 1;
                }
                level = 0;
            } else {
                ++level;
            }
        }
        return res;
    }
};

447. 迴旋鏢的數量

class Solution {
public:
    int numberOfBoomerangs(vector<pair<int, int>>& points)
    {
        int res = 0;
        for (int i = 0; i < points.size(); ++i)
        {
            unordered_map<int, int> m;
            for (int j = 0; j < points.size(); ++j)
            {
                int a = points[i].first - points[j].first;
                int b = points[i].second - points[j].second;
                ++m[a * a + b * b];
            }
            for (auto it = m.begin(); it != m.end(); ++it)
            {
                res += it->second * (it->second - 1);
            }
        }
        return res;
    }
};