Advertisement
Latkoski

Untitled

Jan 21st, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.49 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. class MapEntry<K extends Comparable<K>,E> implements Comparable<K> {
  6.     K key;
  7.     E value;
  8.  
  9.     public MapEntry (K key, E val) {
  10.         this.key = key;
  11.         this.value = val;
  12.     }
  13.     public int compareTo (K that) {
  14.         @SuppressWarnings("unchecked")
  15.         MapEntry<K,E> other = (MapEntry<K,E>) that;
  16.         return this.key.compareTo(other.key);
  17.     }
  18.     public String toString () {
  19.         return "(" + key + "," + value + ")";
  20.     }
  21. }
  22.  
  23.  
  24. class OBHT<K extends Comparable<K>,E> {
  25.  
  26.     private MapEntry<K,E>[] buckets;
  27.     static final int NONE = -1; // ... distinct from any bucket index.
  28.     @SuppressWarnings({ "rawtypes", "unchecked" })
  29.     private static final MapEntry former = new MapEntry(null, null);
  30.     private int occupancy = 0;
  31.    
  32.     @SuppressWarnings("unchecked")
  33.     public OBHT (int m) {
  34.         buckets = (MapEntry<K,E>[]) new MapEntry[m];
  35.     }
  36.  
  37.     private int hash (K key) {
  38.         return Math.abs(key.hashCode()) % buckets.length;
  39.     }
  40.    
  41.     public MapEntry<K,E> getBucket(int i){
  42.         return buckets[i];
  43.     }
  44.    
  45.     public int search (K targetKey) {
  46.         int b = hash(targetKey); int n_search=0;
  47.         for (;;) {
  48.             MapEntry<K,E> oldEntry = buckets[b];
  49.             if (oldEntry == null)
  50.                 return NONE;
  51.             else if (targetKey.equals(oldEntry.key))
  52.                 return b;
  53.             else{
  54.                 b = (b + 1) % buckets.length;
  55.                 n_search++;
  56.                 if(n_search==buckets.length)
  57.                     return NONE;
  58.             }
  59.         }
  60.     }
  61. public String exist(K key) {
  62.        
  63.         int b = search(key);
  64.  
  65.         if (b == NONE)
  66.             return "";
  67.        
  68.         else
  69.             return buckets[b].value.toString();
  70.  
  71.     }
  72.  
  73.     public void insert (K key, E val) {
  74.         MapEntry<K,E> newEntry = new MapEntry<K,E>(key, val);
  75.         int b = hash(key); int n_search=0;
  76.        
  77.         for (;;) {
  78.             MapEntry<K,E> oldEntry = buckets[b];
  79.             if (oldEntry == null) {
  80.                 if (++occupancy == buckets.length) {
  81.                     System.out.println("Hash tabelata e polna!!!");
  82.                 }
  83.                 buckets[b] = newEntry;
  84.                 return;
  85.             } else if (oldEntry == former
  86.                     || key.equals(oldEntry.key)) {
  87.                 buckets[b] = newEntry;
  88.                 return;
  89.             } else{
  90.                 b = (b + 1) % buckets.length;
  91.                 n_search++;
  92.                 if(n_search==buckets.length)
  93.                     return;
  94.  
  95.             }
  96.         }
  97.     }
  98.    
  99.     @SuppressWarnings("unchecked")
  100.     public void delete (K key) {
  101.         int b = hash(key); int n_search=0;
  102.         for (;;) {
  103.             MapEntry<K,E> oldEntry = buckets[b];
  104.            
  105.             if (oldEntry == null)
  106.                 return;
  107.             else if (key.equals(oldEntry.key)) {
  108.                 buckets[b] = former;
  109.                 return;
  110.             } else{
  111.                 b = (b + 1) % buckets.length;
  112.                 n_search++;
  113.                 if(n_search==buckets.length)
  114.                     return;
  115.  
  116.             }
  117.         }
  118.     }
  119.  
  120.     public String toString () {
  121.         String temp = "";
  122.         for (int i = 0; i < buckets.length; i++) {
  123.             temp += i + ":";
  124.             if (buckets[i] == null)
  125.                 temp += "\n";
  126.             else if (buckets[i] == former)
  127.                 temp += "former\n";
  128.             else
  129.                 temp += buckets[i] + "\n";
  130.         }
  131.         return temp;
  132.     }
  133. }
  134.  
  135.  
  136. class Zbor implements Comparable<Zbor>{
  137.     String zbor;
  138.  
  139.     public Zbor(String zbor) {
  140.         this.zbor = zbor;
  141.     }
  142.     @Override
  143.     public boolean equals(Object obj) {
  144.         if (this == obj)
  145.             return true;
  146.         if (obj == null)
  147.             return false;
  148.         if (getClass() != obj.getClass())
  149.             return false;
  150.         Zbor other = (Zbor) obj;
  151.         if (zbor == null) {
  152.             if (other.zbor != null)
  153.                 return false;
  154.         } else if (!zbor.equals(other.zbor))
  155.             return false;
  156.         return true;
  157.     }
  158.     @Override
  159.     public int hashCode() {
  160.         final int prime = 31;
  161.         int result = 1;
  162.         result = prime * result + ((zbor == null) ? 0 : zbor.hashCode());
  163.         return result;
  164.     }
  165.     @Override
  166.     public String toString() {
  167.         return zbor;
  168.     }
  169.     public int compareTo(Zbor zbor) {
  170.         return 0;
  171.     }
  172. }
  173.  
  174. public class Speluvanje {
  175.     public static void main(String[] args) throws IOException {
  176.         OBHT<Zbor, String> tabela;
  177.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  178.         int N = Integer.parseInt(br.readLine());
  179.         int n = (int) (N*1.5);
  180.         tabela = new OBHT<Zbor,String>(n);
  181.         for(int i=0; i < N; i++) {
  182.             String words = br.readLine();
  183.             Zbor novZbor = new Zbor(words.toLowerCase());
  184.             tabela.insert(novZbor, words); 
  185.         }
  186.         int count = 0;
  187.         String tekst = br.readLine().toLowerCase();
  188.         String[] parsed = tekst.split(" ");
  189.         for(int i=0; i < parsed.length; i++) {
  190.             String word = parsed[i];
  191.             if (parsed[i].contains(".")) {
  192.                 word = parsed[i].replace(".", "");
  193.             }
  194.             if (parsed[i].contains(",")) {
  195.                 word = parsed[i].replace(",", "");
  196.             }
  197.             if (parsed[i].contains("!")) {
  198.                 word = parsed[i].replace("!", "");
  199.             }
  200.             if (parsed[i].contains("?")) {
  201.                 word = parsed[i].replace("?", "");
  202.             }
  203.             Zbor novZbor = new Zbor(word);
  204.             if(tabela.exist(novZbor) == "") {
  205.                 System.out.println(novZbor);
  206.             }
  207.             else count++;  
  208.         }
  209.         if(count == parsed.length)
  210.             System.out.println("Bravo");
  211.         if(parsed.length == 1)
  212.             System.out.println("Bravo");
  213.     }
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement