思路:
主要是构建一个trie前缀树结构。如果构建呢?看题意,应该当前节点对象下有几个属性:
1、next节点数组
2、是否为结尾
3、当前值
代码如下:
class Trie {class Node {boolean end;Node[] nexts;public Node() {end = false;nexts = new Node[26];}}public Node root;public Trie() {root = new Node();}public void insert(String word) {if (word == null) {return;}char[] chs = word.toCharArray();Node node = root;int path;for (int i = 0; i < chs.length; i++) {path = chs[i] - 'a';if (node.nexts[path] == null) {node.nexts[path] = new Node();}node = node.nexts[path];}node.end = true;}public boolean search(String word) {if (word == null) {return false;}char[] chs = word.toCharArray();Node node = root;int path;for (int i = 0; i < chs.length; i++) {path = chs[i] - 'a';if (node.nexts[path] == null) {return false;}node = node.nexts[path];}return node.end;}public boolean startsWith(String prefix) {if (prefix == null) {return false;}char[] chs = prefix.toCharArray();int path;Node node = root;for (int i = 0; i < chs.length; i++) {path = chs[i] - 'a';if (node.nexts[path] == null) {return false;}node = node.nexts[path];}return true;}
}