Я пытаюсь создать рекурсивную функцию, которая выводит вектор строк, который содержит все возможные комбинации слов (при сохранении порядка букв) данной строки.По сути, это основа программы автокоррекции, которая производит эффекты, аналогичные iPhone.
vector<string> allPossibleWords(string str, vector<vector<char> > & adjacentKeys)
{
vector<string> words;
cout << str << endl;
if (str.length() == 0)
{
return words;
}
char firstLetter = str[0];
string restOf = str.substr(1, str.length() - 1);
int position = position_in_vector(firstLetter);
for (int i = 0; i < adjacentKeys[position].size(); i++)
{
string temp(1, adjacentKeys[position][i]);
words.push_back(temp);
}
//allPossibleWords(restOf, adjacentKeys);
}
int position_in_vector(char letter)
{
return (letter % 97);
}
Например, если str равно "yp", выводом должен быть вектор, содержащий значения {"yp", "tp", "gp", "hp", "up", "yo", "to", "go", "ho", "uo", "yl", "tl", "gl"," hl "," ul "}.Если str равно "y", выводом должен быть вектор, содержащий значения {"y", "t", "g", "h", "u"}.
26 векторов, хранящихся в соседних ключахсодержать буквы рядом с буквой, которая хранится в первой позиции вектора.
a qwsz
b vghjn
c xdfgv
d zserfcx
//and so on
Я застрял с этой функцией и не могу понять, как рекурсивно построить этот вектор.