Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. public class Solution {
  2. Set<String> result = new HashSet<String>();
  3.  
  4. public List<String> findWords(char[][] board, String[] words) {
  5. //HashSet<String> result = new HashSet<String>();
  6.  
  7. Trie trie = new Trie();
  8. for(String word: words){
  9. trie.insert(word);
  10. }
  11.  
  12. int m=board.length;
  13. int n=board[0].length;
  14.  
  15. boolean[][] visited = new boolean[m][n];
  16.  
  17. for(int i=0; i<m; i++){
  18. for(int j=0; j<n; j++){
  19. dfs(board, visited, "", i, j, trie);
  20. }
  21. }
  22.  
  23. return new ArrayList<String>(result);
  24. }
  25.  
  26. public void dfs(char[][] board, boolean[][] visited, String str, int i, int j, Trie trie){
  27. int m=board.length;
  28. int n=board[0].length;
  29.  
  30. if(i<0 || j<0||i>=m||j>=n){
  31. return;
  32. }
  33.  
  34. if(visited[i][j])
  35. return;
  36.  
  37. str = str + board[i][j];
  38.  
  39. if(!trie.startsWith(str))
  40. return;
  41.  
  42. if(trie.search(str)){
  43. result.add(str);
  44. }
  45.  
  46. visited[i][j]=true;
  47. dfs(board, visited, str, i-1, j, trie);
  48. dfs(board, visited, str, i+1, j, trie);
  49. dfs(board, visited, str, i, j-1, trie);
  50. dfs(board, visited, str, i, j+1, trie);
  51. visited[i][j]=false;
  52. }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement