use of org.trie4j.Node in project trie4j by takawitter.
the class Algorithms method contains.
public static boolean contains(Node root, String text) {
if (text.length() == 0) {
return root.getLetters().length == 0 && root.isTerminate();
}
int i = 0;
Node node = root;
while (node != null) {
char[] letters = node.getLetters();
if (letters.length > 0) {
for (char c : letters) {
if (c != text.charAt(i++))
return false;
}
if (i == text.length()) {
return node.isTerminate();
}
}
node = node.getChild(text.charAt(i));
}
return false;
}
use of org.trie4j.Node in project trie4j by takawitter.
the class Algorithms method dump.
public static void dump(Node root, Writer writer) {
final PrintWriter w = new PrintWriter(writer);
final AtomicInteger c = new AtomicInteger();
traverseByDepth(root, new NodeVisitor() {
@Override
public boolean visit(Node node, int nest) {
for (int i = 0; i < nest; i++) {
w.print(" ");
}
if (c.incrementAndGet() > 100) {
w.println("... over 100 nodes");
return false;
}
char[] letters = node.getLetters();
if (letters != null && letters.length > 0) {
w.print(letters);
}
if (node.isTerminate()) {
w.print("*");
}
w.println();
return true;
}
});
w.flush();
}
use of org.trie4j.Node in project trie4j by takawitter.
the class LOUDSTrieTest method test_save_load.
@Test
public void test_save_load() throws Exception {
String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
Trie lt = trieWithWords(words);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
try {
oos.writeObject(lt);
} finally {
oos.flush();
}
lt = (Trie) new ObjectInputStream(new ByteArrayInputStream(baos.toByteArray())).readObject();
for (String w : words) {
Assert.assertTrue(lt.contains(w));
}
Assert.assertFalse(lt.contains("おやすみなさい"));
StringBuilder b = new StringBuilder();
Node[] children = lt.getRoot().getChildren();
for (Node n : children) {
char[] letters = n.getLetters();
b.append(letters[0]);
}
Assert.assertEquals("おこさ", b.toString());
}
use of org.trie4j.Node in project trie4j by takawitter.
the class LOUDSTrieTest method test.
@Test
public void test() throws Exception {
String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
Trie lt = trieWithWords(words);
for (String w : words) {
Assert.assertTrue(w, lt.contains(w));
}
Assert.assertFalse(lt.contains("おやすみなさい"));
StringBuilder b = new StringBuilder();
Node[] children = lt.getRoot().getChildren();
for (Node n : children) {
char[] letters = n.getLetters();
b.append(letters[0]);
}
Assert.assertEquals("おこさ", b.toString());
}
use of org.trie4j.Node in project trie4j by takawitter.
the class LongsConstantTimeSelect0TailLOUDSTrieWithConcatTailArrayTest method test.
@Test
public void test() throws Exception {
String[] words = { "こんにちは", "さようなら", "おはよう", "おおきなかぶ", "おおやまざき" };
Trie trie = new PatriciaTrie();
for (String w : words) trie.insert(w);
Trie lt = new TailLOUDSTrie(trie);
// Algorithms.dump(lt.getRoot(), new OutputStreamWriter(System.out));
for (String w : words) {
Assert.assertTrue(w, lt.contains(w));
}
Assert.assertFalse(lt.contains("おやすみなさい"));
StringBuilder b = new StringBuilder();
Node[] children = lt.getRoot().getChildren();
for (Node n : children) {
char[] letters = n.getLetters();
b.append(letters[0]);
}
Assert.assertEquals("おこさ", b.toString());
}
Aggregations