ایک 2D بورڈ اور ایک لفظ دیا گیا ہے، معلوم کریں کہ آیا لفظ گرڈ میں موجود ہے۔ لفظ کو یکے بعد دیگرے ملحقہ خلیوں کے حروف سے بنایا جا سکتا ہے، جہاں ملحقہ خلیے افقی یا عمودی طور پر پڑوسی ہوتے ہیں۔
وضاحت: اس کے لیے بیک ٹریکنگ کے ساتھ ڈیپتھ فرسٹ سرچ (DFS) کی ضرورت ہے۔ گرڈ کے ہر سیل کے ذریعے دہرائیں۔ اگر کوئی سیل لفظ کے پہلے حرف سے میل کھاتا ہے، تو DFS شروع کریں۔ DFS فنکشن پڑوسیوں کو چیک کرتا ہے، یہ یقینی بناتا ہے کہ وہ اگلے حرف سے میل کھاتے ہیں اور موجودہ راستے میں وزٹ نہیں ہوئے ہیں۔ اگر کوئی راستہ ناکام ہو جاتا ہے، تو سیل کو غیر نشان زد کرکے بیک ٹریک کریں۔
function exist(board, word) {
const rows = board.length;
const cols = board[0].length;
function dfs(r, c, index) {
if (index === word.length) return true; // Word found
if (r < 0 || c < 0 || r >= rows || c >= cols || board[r][c] !== word[index]) {
return false;
}
const temp = board[r][c];
board[r][c] = '#'; // Mark as visited
const found = dfs(r + 1, c, index + 1) ||
dfs(r - 1, c, index + 1) ||
dfs(r, c + 1, index + 1) ||
dfs(r, c - 1, index + 1);
board[r][c] = temp; // Backtrack
return found;
}
for (let r = 0; r < rows; r++) {
for (let c = 0; c < cols; c++) {
if (board[r][c] === word[0] && dfs(r, c, 0)) {
return true;
}
}
}
return false;
}
const board = [['A','B','C','E'],['S','F','C','S'],['A','D','E','E']];
console.log(exist(board, 'ABCCED')); // true
console.log(exist(board, 'SEE')); // true
console.log(exist(board, 'ABCB')); // false