# 2452. Words Within Two Edits of Dictionary ###### tags: `Leetcode` `Medium` `Trie` `DFS` Link: https://leetcode.com/problems/words-within-two-edits-of-dictionary/description/ ## 思路 把所有dictionary里面的word都存进trie里 然后dfs搜queries里面的每个单词看trie里有没有和它只差两个字母的单词 ## Code ```java= class Solution { class TrieNode{ TrieNode[] children = new TrieNode[26]; } TrieNode root; public List<String> twoEditWords(String[] queries, String[] dictionary) { root = new TrieNode(); for(String word:dictionary) addWord(word, root); List<String> ans = new ArrayList<>(); for(String q:queries){ if(find(q, root, 2, 0)) ans.add(q); } return ans; } public void addWord(String word, TrieNode root){ TrieNode curr = root; for(int i=0; i<word.length(); i++){ if(curr.children[word.charAt(i)-'a']==null) curr.children[word.charAt(i)-'a'] = new TrieNode(); curr = curr.children[word.charAt(i)-'a']; } } public boolean find(String word, TrieNode root, int edits, int idx){ if(edits<0) return false; if(idx==word.length()) return true; for(int i=0; i<26; i++){ if(root.children[i]==null) continue; if(i==word.charAt(idx)-'a' && find(word, root.children[i], edits, idx+1)) return true; else if(find(word, root.children[i], edits-1, idx+1)) return true; } return false; } } ```