难度中等346收藏分享切换为英文关注反馈
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
board =
[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
]
给定 word = "ABCCED", 返回 true
给定 word = "SEE", 返回 true
给定 word = "ABCB", 返回 false
我非常好的掌握的哈希
public bool Exist(char[][] board, string word)
{
var dic = new Dictionary<char, int>();
for (int i = 0; i < board.Length; i++)
{
for (int j = 0; j < board[i].Length; j++)
{
if (dic.ContainsKey(board[i][j]))
{
dic[board[i][j]]++;
}
else
{
dic[board[i][j]] = 1;
}
}
}
bool res = true;
for (int i = 0; i < word.Length; i++)
{
if (!dic.ContainsKey(word[i])||dic[word[i]]==0)
{
res = false;
break;
}
else
{
dic[word[i]]--;
}
}
return res;
}
可是却没看到题中题目要求对角线的不可以,要求能连上的才行,无法通过下面案例:
输入:
[["a","b"],["c","d"]] "abcd"
输出
true
预期结果
false