vector<string> Solution::prefix(vector<string> &A) { // Do not write main() function. // Do not read input, instead use the arguments to the function. // Do not print the output, instead return values as specified // Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details // Construct a Trie of all words trieNode *root = new trieNode(); root->freq = 0; for (int i = 0; i<A.size(); i++) insert(root, A[i]); vector<string> result; for(int i=0; i<A.size();i++) result.push_back(findPrefixes(root, A[i])); return result; }
TextEditor::IAssistProposal *CompletionAssistProcessor::perform(const TextEditor::AssistInterface *interface) { // There we trigger request to merlin m_interface.reset(interface); if (interface->reason() == TextEditor::IdleEditor) return nullptr; setPerformWasApplicable(true); int curPosition = interface->position(); int askedLine, askedCol, prefixLine, prefixCol; TextEditor::Convenience::convertPosition(interface->textDocument(), curPosition, &askedLine, &askedCol); //const int startPosition = findStartOfName(); int startPosition, qtcPos; findPrefixes(-1, startPosition, qtcPos); TextEditor::Convenience::convertPosition(interface->textDocument(), startPosition, &prefixLine, &prefixCol); // qDebug() << QString("prefix(Line,Col) = (%1, %2)").arg(prefixLine).arg(prefixCol); // FIXME: We should check the block status in case of multi-line tokens const QString prefix = interface->textAt(startPosition, curPosition-startPosition); // const QString qtcPrefix = // interface->textAt(qtcPos, curPosition-qtcPos); // qDebug() << QString("QtC prefix = `%1`").arg(qtcPrefix); RubocopHighlighter::instance()->performCompletion( interface->textDocument(), prefix, qtcPos, askedLine, askedCol, [this](TextEditor::IAssistProposal *proposal) { QTC_CHECK(proposal); this->setAsyncProposalAvailable(proposal); } ); return nullptr; }