Advertisement
Guest User

Untitled

a guest
Apr 27th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.45 KB | None | 0 0
  1. package nl.mprog.ghost.datastructure;
  2.  
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.util.Log;
  6.  
  7. import java.io.Serializable;
  8.  
  9. import nl.mprog.ghost.enumeration.Language;
  10.  
  11. public class Vocabulary implements Serializable {
  12. RadixTree mRadixTree;
  13. Language mLanguage;
  14.  
  15. public Vocabulary(Context context, Language language) {
  16. this.mLanguage = language;
  17. mRadixTree = new RadixTree(context, language);
  18. }
  19.  
  20. public boolean isWord(String word) {
  21. return mRadixTree.isWord(word);
  22. }
  23.  
  24. package nl.mprog.ghost.datastructure;
  25.  
  26. import android.content.Context;
  27. import android.util.Log;
  28.  
  29. import java.io.Serializable;
  30. import java.util.ArrayList;
  31. import java.util.Scanner;
  32.  
  33. import nl.mprog.ghost.R;
  34. import nl.mprog.ghost.enumeration.Language;
  35.  
  36. public class RadixTree implements Serializable {
  37. private RadixTreeNode mRoot = new RadixTreeNode();
  38. private ArrayList<RadixTreeNode> mActiveNodes;
  39.  
  40. public RadixTree(Context context, Language language) {
  41. readInWords(getFileScanner(context, language));
  42. }
  43.  
  44. public void readInWords(Scanner scanner) {
  45. String word;
  46.  
  47. while(scanner.hasNextLine()) {
  48. word = scanner.nextLine();
  49. mRoot.insertWord(word, mRoot);
  50. }
  51.  
  52. scanner.close();
  53. }
  54.  
  55. public Scanner getFileScanner(Context context, Language language) {
  56. Scanner scanner;
  57.  
  58. switch (language) {
  59. case DUTCH:
  60. scanner = new Scanner(context.getResources().openRawResource(R.raw.dutch));
  61. break;
  62. case ENGLISH:
  63. scanner = new Scanner(context.getResources().openRawResource(R.raw.english));
  64. break;
  65. default:
  66. scanner = new Scanner(context.getResources().openRawResource(R.raw.english));
  67. break;
  68. }
  69.  
  70. return scanner;
  71. }
  72.  
  73. public boolean isWord(String word) {
  74. RadixTreeNode activeNode = mRoot;
  75. char[] chars = word.toCharArray();
  76.  
  77. for(int i = 0; i < chars.length; i++) {
  78. activeNode = activeNode.findNode(activeNode, chars[i]);
  79. if(activeNode == null) return false;
  80. }
  81.  
  82. if(activeNode.mIsWordEnd) {
  83. return true;
  84. } else {
  85. return false;
  86. }
  87. }
  88. }
  89.  
  90. import android.util.Log;
  91.  
  92. import java.io.Serializable;
  93.  
  94. public class RadixTreeNode implements Serializable {
  95. RadixTreeNode[] mChildren = new RadixTreeNode[0];
  96. char mCharacter = '0';
  97. boolean mIsWordEnd;
  98.  
  99. public RadixTreeNode() {
  100. }
  101.  
  102. public RadixTreeNode(char character) {
  103. this.mCharacter = character;
  104. }
  105.  
  106. public RadixTreeNode(char character, boolean isWordEnd) {
  107. this.mCharacter = character;
  108. this.mIsWordEnd = isWordEnd;
  109. }
  110.  
  111. public void insert(char character) {
  112. for(RadixTreeNode node : mChildren) {
  113. if(node.mCharacter == character) {
  114. return;
  115. }
  116. }
  117.  
  118. addChild(new RadixTreeNode(character));
  119. }
  120.  
  121. public void insert(char character, boolean isWordEnd) {
  122. for(RadixTreeNode node : mChildren) {
  123. if(node.mCharacter == character) {
  124. return;
  125. }
  126. }
  127.  
  128. addChild(new RadixTreeNode(character, isWordEnd));
  129. }
  130.  
  131. private void addChild(RadixTreeNode node) {
  132. if(mChildren.length == 0) {
  133. mChildren = new RadixTreeNode[1];
  134. mChildren[0] = node;
  135. } else {
  136. RadixTreeNode[] temp = new RadixTreeNode[mChildren.length + 1];
  137. System.arraycopy(mChildren, 0, temp, 0, mChildren.length);
  138. temp[mChildren.length] = node;
  139. mChildren = temp;
  140. }
  141. }
  142.  
  143. public RadixTreeNode[] getChildren() {
  144. return mChildren;
  145. }
  146.  
  147. public void insertWord(String word, RadixTreeNode root) {
  148. RadixTreeNode activeNode = root;
  149. char[] array = word.toCharArray();
  150.  
  151. for(int i = 0; i < (array.length - 1); i++) {
  152. activeNode.insert(array[i]);
  153. activeNode = findNode(activeNode, array[i]);
  154. }
  155.  
  156. activeNode.insert(array[array.length - 1], true);
  157. }
  158.  
  159. public RadixTreeNode findNode(RadixTreeNode startPosition, char character) {
  160. RadixTreeNode[] children = startPosition.getChildren();
  161. if(children.length == 0) {
  162. return null;
  163. } else {
  164. for(RadixTreeNode rtn : children) {
  165. if(rtn.mCharacter == character) return rtn;
  166. }
  167. }
  168.  
  169. return null;
  170. }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement