The Anagram Indices

Given a word W and a string S, find all starting indices in S which are anagrams of W.

For example, given that W is "ab", and S is "abxaba", return 0, 3, and 4.

Example:

Input:  W = "ab", S = "abxaba"
Output: [0, 3, 4]

Approach

C++

#include <bits/stdc++.h>
using namespace std;

vector<intgetAnagrams(string wstring str)
{

    vector<intindexList;
    int n = str.size() - w.size() + 1;

    for (int i = 0i < n; ++i)
    {
        string subStr = str.substr(iw.size());
        int total = w.size();
        for (int j = 0j < w.size(); ++j)
        {
            int index = subStr.find(w[j]);
            if (index != string::npos)
            {

                subStr.replace(index1"");
                total--;
            }
        }
        if (total == 0)
        {
            indexList.push_back(i);
        }
    }
    return indexList;
}

int main()
{

    string w = "ab";
    string str = "abxaba";
    vector<intres = getAnagrams(wstr);

    cout << "[";
    for (int i = 0i < res.size(); ++i)
    {

        cout << res[i];
        if (i != res.size() - 1)
            cout << ", ";
    }
    cout << "]";
    return 0;
}


No comments:

Post a Comment