Q.String Analgm
Sol :
#include<iostream>
#include<vector>
#include<string>
using namespace std;
#define NO_OF_CHARS 256
bool areAnagram(string str1,string str2){
// Create 2 count arrays and initialize all values as 0
int count1[NO_OF_CHARS] = { 0 };
int count2[NO_OF_CHARS] = { 0 };
int i;
// For each character in input strings, increment count in
// the corresponding count array
for (i = 0; str1[i] && str2[i]; i++) {
count1[str1[i]]++;
count2[str2[i]]++;
}
// If both strings are of different length. Removing this
// condition will make the program fail for strings like
// "aaca" and "aca"
if (str1[i] || str2[i])
return false;
// Compare count arrays
for (i = 0; i < NO_OF_CHARS; i++)
if (count1[i] != count2[i])
return false;
return true;
}
vector<int> stringAnalgm(vector<string> dictionary,vector<string> query){
vector<int> sizeAnalgm;
string dicTest;
string queryTest;
bool check;
int match;
for(int i=0;i<query.size();i++){
match=0;
queryTest=query[i];
//cout<<"i : "<<queryTest<<endl;
for(int j=0; j<dictionary.size();j++){
dicTest=dictionary[j];
//cout<<"j : "<<dicTest<<endl;
if(queryTest.size()==dicTest.size()){
// cout<<queryTest<<" = "<<dicTest<<endl;
check=areAnagram(queryTest,dicTest);
if(check){
++match;
}
}
}
sizeAnalgm.push_back(match);
}
return sizeAnalgm;
}
int main(){
int dicSize,querySize;
cout<<"Enter the size of dictionary : ";
cin>>dicSize;
vector<string> dictionary;
cout<<"Enter the element on dictionary\n";
string data;
for(int i=0;i<dicSize;i++){
cin>>data;
dictionary.push_back(data);
}
cout<<"Enter the size of query : ";
cin>>querySize;
vector<string> query;
cout<<"Enter the element on query\n";
for(int i=0;i<querySize;i++){
cin>>data;
query.push_back(data);
}
vector<int> result=stringAnalgm(dictionary,query);
for(int i=0;i<result.size();i++){
cout<<result[i]<<endl;
}
return 0;
}
Comments
Post a Comment