daily pastebin goal
29%
SHARE
TWEET

Untitled

a guest Mar 25th, 2019 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package VetorDeFrequencia;
  2.  
  3. public class FrequencyVector {
  4.     private class Node {
  5.         Node previous, next;
  6.         char key;
  7.         int frequency;
  8.     }
  9.  
  10.     private Node root;
  11.     private int size;
  12.  
  13.     public FrequencyVector(String text) {
  14.         size = 0;
  15.         root = new Node();
  16.         root.frequency = -1;
  17.         root.next = root;
  18.         root.previous = root;
  19.         readInput(text);
  20.     }
  21.  
  22.     public int getSize() {
  23.         return size;
  24.     }
  25.  
  26.     public void readInput(String text) {
  27.         for(int i = 0; i < text.length(); i++) {
  28.             add(text.charAt(i));
  29.         }
  30.     }
  31.  
  32.     public Node search(char key) {
  33.         Node i = root;
  34.         Node j = root;
  35.  
  36.         while(true) {
  37.             i = i.next;
  38.             j = j.previous;
  39.  
  40.             if(i.key == key) {
  41.                 return i;
  42.             } else if (j.key == key) {
  43.                 return j;
  44.             } else if (i == j) {
  45.                 return null;
  46.             }
  47.         }
  48.     }
  49.  
  50.     public Node search(int frequency) {
  51.         Node i;
  52.         for(i = root.next; i.frequency < frequency; i = i.next){
  53.             if(i.frequency == -1){
  54.                 return null;
  55.             }
  56.         }
  57.         return i;
  58.     }
  59.  
  60.     public void add(char key) {
  61.         root = add(root, key);
  62.     }
  63.  
  64.     private Node add(Node node, char key) {
  65.         Node temp = search(key);
  66.  
  67.         if(temp == null) {
  68.             temp = new Node();
  69.  
  70.             temp.key = key;
  71.             temp.frequency = 1;
  72.  
  73.             temp.next = node.next;
  74.             temp.previous = node;
  75.  
  76.             node.next.previous = temp;
  77.             node.next = temp;
  78.  
  79.             size++;
  80.         } else {
  81.             temp.frequency++;
  82.  
  83.             temp.previous.next = temp.next;
  84.             temp.next.previous = temp.previous;
  85.  
  86.             Node temp2 = search(temp.frequency);
  87.  
  88.             if(temp2 == null) {
  89.                 temp.next = node;
  90.                 temp.previous = node.previous;
  91.  
  92.                 node.previous.next = temp;
  93.                 node.previous = temp;
  94.             } else {
  95.                 temp2.previous.next = temp;
  96.                 temp.previous = temp2.previous;
  97.                 temp2.previous = temp;
  98.                 temp.next = temp2;
  99.             }
  100.         }
  101.  
  102.         return node;
  103.     }
  104.  
  105.     public int[] keyToVector(){
  106.         int vector[] = new int[size];
  107.         Node temp = root.next;
  108.  
  109.         for(int i = 0; temp.frequency != -1; i++){
  110.             vector[i] = temp.key;
  111.             temp = temp.next;
  112.         }
  113.  
  114.         return vector;
  115.     }
  116.  
  117.     public int[] frequencyToVector(){
  118.         int vector[] = new int[size];
  119.         Node temp = root.next;
  120.  
  121.         for(int i = 0; temp.frequency != -1; i++){
  122.             vector[i] = temp.frequency;
  123.             temp = temp.next;
  124.         }
  125.  
  126.         return vector;
  127.     }
  128.  
  129.     public int[][] toMatrix(){
  130.         int matrix[][] = {keyToVector(), frequencyToVector()};
  131.  
  132.         return matrix;
  133.     }
  134.  
  135.     @Override
  136.     public String toString() {
  137.  
  138.         String matrix = "|";
  139.         for(Node i = root.next; i.frequency != -1; i = i.next) {
  140.             matrix = matrix + i.key + '|';
  141.         }
  142.  
  143.         matrix = matrix + "\n|";
  144.  
  145.         for(Node i = root.next; i.frequency != -1; i = i.next) {
  146.             matrix = matrix + i.frequency + '|';
  147.         }
  148.  
  149.         return matrix;
  150.     }
  151. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top