본문 바로가기
algorithm

[algorithm] Sherlock and Anagrams (Hackerrank) (답있음 주의)

by 대우니 2020. 3. 18.
728x90
반응형

https://www.hackerrank.com/challenges/sherlock-and-anagrams/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=dictionaries-hashmaps

 

Sherlock and Anagrams | HackerRank

Find the number of unordered anagramic pairs of substrings of a string.

www.hackerrank.com

Anagram

단어나 문장을 구성하고 있는 문자의 순서를 바꾸어 다른 단어나 문장을 만드는 놀이

예시

  • 미개 -> 개미
  • stressed -> desserts

저는 sort와 hashmap을 이용해서 풀었습니다.

// Complete the sherlockAndAnagrams function below.
int sherlockAndAnagrams(string s) {
    int answer = 0;
    unordered_map<string,int> anagramHash;
    for(int i = 0; i < s.length(); i++){
        string presentString = "";
        for(int j = i; j < s.length(); j++){
            presentString += s[j];
            sort(presentString.begin(),presentString.end());
            unordered_map<string,int> :: iterator anagramIter = anagramHash.find(presentString);
            if(anagramHash.size() > 0 && anagramIter != anagramHash.end()){
                int num = anagramIter->second;
                answer+= num;
                anagramHash.erase(presentString);
                anagramHash.insert(make_pair(presentString,num+1));
            }
            else
                anagramHash.insert(make_pair(presentString,1));
        }
    }
    return answer;
}

 

반응형