程式語言 - LeetCode - C++ - 467. Unique Substrings in Wraparound String



題目:


解答:

class Solution {
public:
    int findSubstringInWraproundString(string s) {
        int k = 0;
        int n = s.size();
        vector<int> dp(26, 0);
        
        for (int i = 0; i < n; ++i) {
            if (i > 0 && (((s[i] - s[i - 1] + 26) % 26) == 1))  {
                k += 1;
            }
            else {
                k = 1;
            }

            int idx = s[i] - 'a';
            dp[idx] = max(dp[idx], k);
        }

        int ans = 0;
        for (int v : dp) {
            ans += v;
        }

        return ans;
    }
};