Question: Recognizing anagrams Given a Vector phrases, remove each phrase that is an anagram of an earlier phrase, and return the remaining phrases in their original

Recognizing anagrams

Given a Vector phrases, remove each phrase that is an anagram of an earlier phrase, and return the remaining phrases in their original order. Do all of this in C++.

Examples:

{ "SnapDragon vs tomek", "savants groped monk", "Adam vents prongs ok" } Returns: { "SnapDragon vs tomek" } 
{ "Aaagmnrs", "TopCoder", "anagrams", "Drop Cote" } Returns: { "Aaagmnrs", "TopCoder" } 

The code in bold CANNOT be changed:

#include

bool isValid(string s1, string s2){ if(s1.length() == s2.length()){ for(int i = 0; i < s1.length();i++){ s2[i]=tolower(s2[i]); s1[i]=tolower(s1[i]); if (s2[i] == ' '){ s2[i] = '_'; } if (s1[i] == ' '){ s1[i] = '_'; } } } if(s1.length() != s2.length()){ return false; } std::sort(s1.begin(), s1.end()); std::sort(s2.begin(), s2.end()); bool is_valid = true; for(int i = 0; i < s1.length();i++){ if(s1[i] != s2[i]){ is_valid = false; } } return is_valid; }

Vector anagrams(Vector phrases) { Vector grams; for(int i = 0; i < phrases.size() - 1; i++){ for(int j = i + 1; j < phrases.size(); j++){ if(isValid(phrases[i],phrases[j])){ grams += phrases[i]; phrases.remove(j); } } } return grams; }

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!