Skip to content

Instantly share code, notes, and snippets.

@esbanarango
Created March 21, 2012 06:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save esbanarango/2145164 to your computer and use it in GitHub Desktop.
Save esbanarango/2145164 to your computer and use it in GitHub Desktop.
Interviewstreet Challenge - FIND STRINGS
using namespace std;
#include <algorithm>
#include <iostream>
#include <iterator>
#include <numeric>
#include <sstream>
#include <fstream>
#include <cassert>
#include <climits>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <vector>
#include <cmath>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
int main(){
int numS=0; scanf("%d",&numS);
int res=numS;
vector<string> strings;
vector< vector<string> > eses;
string sTemp;
//Data
while(res--){
cin>>sTemp;
strings.push_back(sTemp);
}
cout<<"ni ide<";
int sizeSuperS = 0;
//Generating substrings
for (int i = 0; i < strings.size(); ++i)
{
vector<string> sub;
bool cambio= false;
for (int j = 0,m=0,n=1; j < strings[i].size()*2-1 ; ++j)
{
string subSTemp = strings[i].substr(m,n);
if(find(sub.begin(), sub.end(), subSTemp)==sub.end())
sub.push_back(subSTemp);
//Change the subString generator
if(n == strings[i].size()){cambio=true;}
if(cambio){
m++;
n--;
}else{
n++;
}
}
//unique (sub.begin(), sub.end(),compS);
//sub.resize( it - sub.begin());
sizeSuperS += sub.size();
eses.push_back(sub);
}
vector<string>superEse(sizeSuperS,"-1");
if(numS == 1){
superEse = eses[0];
}else{
set_union (eses[0].begin(),eses[0].end(),eses[1].begin(),eses[1].end(),superEse.begin());
for (int i = 2; i < eses.size(); ++i)
{
vector<string> temp = superEse;
set_union (temp.begin(),temp.end(),eses[i].begin(),eses[i].end(),superEse.begin());
}
}
//for (int i = 0; i < eses.size(); ++i)
//{
set_union (eses[0].begin(),eses[0].end(),eses[1].begin(),eses[1].end(),superEse.begin());
//}
for (int i = 0; i < superEse.size(); ++i)
{
cout<<superEse[i]<<" - ";
/*for (int j = 0; j < eses[i].size(); ++j)
{
cout<<eses[i][j]<<" ";
}
cout<<endl;*/
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment