[Leetcode] 0079. 단어 검색

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

주어진 xn 문자 그리드 판자 그리고 문자열 단어, 반품 진실 만약에 단어 그리드에 존재합니다.

단어는 연속적으로 인접한 셀의 문자로 구성될 수 있으며, 인접한 셀은 수평 또는 수직으로 이웃합니다. 동일한 문자 셀은 두 번 이상 사용될 수 없습니다.

 

예시 1:

입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "ABCCED"
산출: 진실

예 2:

입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "보다"
산출: 진실

예시 3:

입력: 보드 = [["A","B","C","E"],["S","F","C","S"],["A","D","E ","E"]], 단어 = "ABCB"
산출: 거짓

 

제약:

  • m == 보드 길이
  • n = 보드[i].길이
  • 1 <= m, n <= 6
  • 1 <= 단어 길이 <= 15
  • 판자 그리고 단어 소문자와 대문자로만 구성됩니다.

 

후속 조치: 더 큰 솔루션을 더 빠르게 만들기 위해 검색 정리를 사용할 수 있습니까? 판자?

파이썬

				
					# 시간 복잡도: O(c*3^l) # 공간 복잡도: O(l) from typing import List class 솔루션: def exist(self, board: List[List[str]], word: str) -> bool: def backtrack(suffix: str, r: int, c: int): len(suffix) == 0: 0 <= r < ROW 및 0 <= c < COL이 아니면 True를 반환합니다. 그렇지 않으면 suffix[0] ! = board[r][c]: False를 반환합니다. result = False originalChar = board[r][c] board[r][c] = "#" for dr,dc in ([1,0],[0,1 ],[-1,0],[0,-1]): result = backtrack(suffix[1:], r+dr, c+dc) result: break board[r][c] = originalChar result를 반환합니다. ROW = len(board) COL = len(board[0]) for row in range(ROW): for col in range(COL): if backtrack(word, row, col): true를 반환하고 False를 반환합니다. board = [[" A, B, C, E], [S, F, C, S], [A, D, E, E] ]] 단어 = "ABCCED" print(Solution().exist(board, word))
				
			
ko_KR한국어