3.30阿里云三面,只问了论文工作,很详细
4.10阿里云hr面
- 1.内存分配过程详细说说
- 2.slab怎么解决内存碎片的
- 3.论文内容
- 4.向量余弦相似度怎么计算的
- 5.编程题
其实是实现trie树
struct TrieNode {
int count;
struct TrieNode* child[26];
TrieNode():count(0) {
for (int i = 0; i != 26; ++i) {
memset(child[i], 0, sizeof(TrieNode*));
}
}
};
class TrieTree {
public:
void insert(const string& str)
{
TrieNode* cur = &*root;
for (const auto& c : str) {
if (cur->child[c - 'a'] == nullptr) {
TrieNode* newNode = new TrieNode();
cur->child[c - 'a'] = newNode;
}
cur = cur->child[c - 'a'];
}
cur->count += 1;
}
bool search(const string& str)
{
TrieNode* cur = root;
for (const auto& c : str) {
if (cur->child[c - 'a'] == nullptr)
return false;
cur = cur->child[c - 'a'];
}
if (cur->count == 0)
return false;
return true;
}
private:
struct TrieNode* root;
};
int main()
{
TrieNode* node = new TrieNode();
TrieTree* root = new TrieTree(node);
root->insert("a");
root->insert("app");
while (1) {
string test;
cin >> test;
bool ok = root->search(test);
if (ok) {
//
}
}
}