難度中等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