/*
Given a set contains {'a', 'b', 'c'} and an integer K, if K == 2
return aa, ab, ac, ba, bb, bc, ca, cb, cc
Follow up: the output contains different characters.
Follow up: how to realize it without using extra space. // Have no idea right now.
*/
#include <vector>
#include <set>
#include <iostream>
using namespace std;
void letterCombinations(vector<char>& inputs, int k, string path, vector<string>& res, vector<bool>& visited) {
if(k < 0) return;
if(k == 0) {
res.push_back(path);
return;
}
for(int i = 0; i < inputs.size(); ++i) {
// if(!visited[inputs[i]]) { uncomment these lines will make follow up 2.
// visited[inputs[i]] = true;
k = k - 1;
letterCombinations(inputs, k, path + inputs[i], res, visited);
k = k + 1;
// visited[inputs[i]] = false;
// }
}
}
vector<string> letterCombinations(vector<char>& inputs, int k) {
string path = "";
vector<string> res;
vector<bool> visited(256, false);
letterCombinations(inputs, k, path, res, visited);
return res;
}
int main(void) {
vector<char> inputs{'a', 'b', 'c'};
vector<string> res = letterCombinations(inputs, 2);
for(int i = 0; i < res.size(); ++i) {
cout << res[i] << " ";
}
cout << endl; }<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
Selected Numbers Characters permutation.
最新推荐文章于 2021-11-03 13:34:36 发布