467 Unique substrings in wraparound string

uniqu substring

class Solution {
public:
    int findSubstringInWraproundString(string p) {
        vector<int> max_to(26, 0);
        int cur = 0;
        while (cur < p.length()) {
            int next = cur;
            // 注意边界情况
            while(next < p.length() && ((p[next] - p[cur] + 26) % 26 == (next - cur) % 26)) {
                ++ next;
            }
            int len = next - cur;
            for (int i = cur; i < next && i < cur + 26; ++ i) {
                int idx = ( p[i] - 'a' + 26) % 26;
                max_to[idx] =  max(len--, max_to[idx]);
            }
            cur = next;
        }

        return accumulate(max_to.begin(), max_to.end(), 0);
    }
};

时间代价太大

class Solution {
public:
    int findSubstringInWraproundString(string p) {
        unordered_set<pair<char,int>> unique;
        int len = p.length();
        for (int i = 0; i < len; ++i) {
            for (int j = i; j < len; ++j) {
                if((p[j] - p[i] + 26) % 26 == (j - i) % 26) {
                    unique.insert(make_pair(p[i], j - i));
                } else {
                    break;
                }
            }
        }
        return unique.size();
    }
};

results matching ""

    No results matching ""