2018年拼多多校招筆試——拼出一個與輸入的單詞都不相同的單詞
阿新 • • 發佈:2019-02-15
程式碼:
#include<string>
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_set>
using namespace std;
class Solution{
public:
string core(vector<string>& vec)
{
string temp;
unordered_set<string> m(vec.begin(), vec.end());//為了去除vec中重複的字串
vector<string> v;
//將每個字串相應位置的字元組成一個字串,並去掉重複,最後進行排序形成的字串加入到v中
for(int i=0;i<vec[0].size();i++)
{
string s;
unordered_set<char> a;
for(int j=0;j<vec.size();j++)
{
if(a.find(vec[j][i]) != a.end())
continue ;
s += vec[j][i];
a.insert(vec[j][i]);
}
sort(s.begin(), s.end());
v.push_back(s);
}
permutation(v, 0, temp, m);
return temp == ""? "-":temp;
}
private:
bool permutation(vector<string >& vec, int index, string& temp, unordered_set<string>& m)
{
if(index == vec.size())
{
if(m.find(temp) == m.end())
return true;
return false;
}
for(int i=index; i < vec.size(); i++)
{
for(int j=0; j < vec[i].size(); j++)
{
temp.push_back(vec[i][j]);
if(permutation(vec, i+1, temp, m))
return true;
temp.pop_back();
}
}
return false;
}
};
int main(){
int n, l;
cin >> n >> l;
vector<string> vec;
for(int i=0;i < n;i++)
{
string temp;
cin >> temp;
vec.push_back(temp);
}
string res = Solution().core(vec);
cout << res << endl;
}