Bug Report for https://neetcode.io/problems/search-for-word-ii
Getting 27/29 test cases passed on two different solutions - both fail on test case 28 with a runtime error (confirmed via AddressSanitizer).
- My own solution:
class TrieNode {
public:
TrieNode* child[26];
string word;
TrieNode() {
for (int i = 0; i < 26; i++) {
child[i] = NULL;
}
word = "";
}
};
class Solution {
public:
vector<string> res;
int rows, cols;
void insert(TrieNode* root, string& word) {
TrieNode* curr = root;
for (char ch : word) {
int idx = ch - 'a';
if (curr->child[idx] == NULL) {
curr->child[idx] = new TrieNode();
}
curr = curr->child[idx];
}
curr->word = word;
}
void dfs(vector<vector<char>>& board, TrieNode* node, int r, int c) {
if (r < 0 || r >= rows || c < 0 || c >= cols) {
return;
}
if (board[r][c] == '#') {
return;
}
char ch = board[r][c];
TrieNode* next = node->child[ch - 'a'];
if (next == NULL) {
return;
}
if (!next->word.empty()) {
res.push_back(next->word);
next->word = "";
}
board[r][c] = '#';
dfs(board, next, r - 1, c);
dfs(board, next, r + 1, c);
dfs(board, next, r, c - 1);
dfs(board, next, r, c + 1);
board[r][c] = ch;
}
vector<string> findWords(vector<vector<char>>& board, vector<string>& words) {
res.clear();
rows = board.size();
cols = board[0].size();
TrieNode* root = new TrieNode();
for (string& word : words) {
insert(root, word);
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
dfs(board, root, i, j);
}
}
return res;
}
};
- The official Solution 3 (Backtracking with Trie) from
https://neetcode.io/problems/search-for-word-ii/solution
also fails on the same test case with the same kind of error.
Failing input (test case 28):
board=[["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"]]
words=["ababababaa","ababababab","ababababac","ababababad","ababababae","ababababaf","ababababag","ababababah","ababababai","ababababaj","ababababak","ababababal","ababababam","ababababan","ababababao","ababababap","ababababaq","ababababar","ababababas","ababababat","ababababau","ababababav","ababababaw","ababababax","ababababay","ababababaz","ababababba","ababababbb","ababababbc","ababababbd","ababababbe","ababababbf","ababababbg","ababababbh","ababababbi","ababababbj","ababababbk","ababababbl","ababababbm","ababababbn","ababababbo","ababababbp","ababababbq","ababababbr","ababababbs","ababababbt","ababababbu","ababababbv","ababababbw","ababababbx","ababababby","ababababbz","ababababca","ababababcb","ababababcc","ababababcd","ababababce","ababababcf","ababababcg","ababababch","ababababci","ababababcj","ababababck","ababababcl","ababababcm","ababababcn","ababababco","ababababcp","ababababcq","ababababcr","ababababcs","ababababct","ababababcu","ababababcv","ababababcw","ababababcx","ababababcy","ababababcz","ababababda","ababababdb","ababababdc","ababababdd","ababababde","ababababdf","ababababdg","ababababdh","ababababdi","ababababdj","ababababdk","ababababdl","ababababdm","ababababdn","ababababdo","ababababdp","ababababdq","ababababdr","ababababds","ababababdt","ababababdu","ababababdv","ababababdw","ababababdx","ababababdy","ababababdz","ababababea","ababababeb","ababababec","ababababed","ababababee","ababababef","ababababeg","ababababeh","ababababei","ababababej","ababababek","ababababel","ababababem","ababababen","ababababeo","ababababep","abab...
input truncated for display
Error output (ASan):

Bug Report for https://neetcode.io/problems/search-for-word-ii
Getting 27/29 test cases passed on two different solutions - both fail on test case 28 with a runtime error (confirmed via AddressSanitizer).
https://neetcode.io/problems/search-for-word-ii/solution
also fails on the same test case with the same kind of error.
Failing input (test case 28):
board=[["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"],["b","a","b","a","b","a","b","a","b","a"],["a","b","a","b","a","b","a","b","a","b"]]
words=["ababababaa","ababababab","ababababac","ababababad","ababababae","ababababaf","ababababag","ababababah","ababababai","ababababaj","ababababak","ababababal","ababababam","ababababan","ababababao","ababababap","ababababaq","ababababar","ababababas","ababababat","ababababau","ababababav","ababababaw","ababababax","ababababay","ababababaz","ababababba","ababababbb","ababababbc","ababababbd","ababababbe","ababababbf","ababababbg","ababababbh","ababababbi","ababababbj","ababababbk","ababababbl","ababababbm","ababababbn","ababababbo","ababababbp","ababababbq","ababababbr","ababababbs","ababababbt","ababababbu","ababababbv","ababababbw","ababababbx","ababababby","ababababbz","ababababca","ababababcb","ababababcc","ababababcd","ababababce","ababababcf","ababababcg","ababababch","ababababci","ababababcj","ababababck","ababababcl","ababababcm","ababababcn","ababababco","ababababcp","ababababcq","ababababcr","ababababcs","ababababct","ababababcu","ababababcv","ababababcw","ababababcx","ababababcy","ababababcz","ababababda","ababababdb","ababababdc","ababababdd","ababababde","ababababdf","ababababdg","ababababdh","ababababdi","ababababdj","ababababdk","ababababdl","ababababdm","ababababdn","ababababdo","ababababdp","ababababdq","ababababdr","ababababds","ababababdt","ababababdu","ababababdv","ababababdw","ababababdx","ababababdy","ababababdz","ababababea","ababababeb","ababababec","ababababed","ababababee","ababababef","ababababeg","ababababeh","ababababei","ababababej","ababababek","ababababel","ababababem","ababababen","ababababeo","ababababep","abab...
input truncated for display
Error output (ASan):