Skip to main content

Anagram search from a file

// All the words are in the file Dictionary.txt

import java.io.*;
import java.util.*;
public class Anag
{
    static String[] words;
    public static void main(String args[]) throws IOException
    {
        Hashtable<String, List> ht;
        try {
            FileInputStream fstream = new FileInputStream("Dictionary.txt");
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader br = new BufferedReader(new InputStreamReader(in));
            List<String> lines = new ArrayList<String>();
            String ele;
            while ((ele = br.readLine()) != null)
                lines.add(ele);
            words = lines.toArray(new String[lines.size()]);
            in.close();
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        }
        ht = getAnagrams();
        BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter key number:");
        String wd = br1.readLine();
        char[] chars = wd.toCharArray();
        Arrays.sort(chars);
        String key = String.valueOf(chars);
        System.out.println(ht.get(key));
    }

    public static Hashtable<String, List> getAnagrams() {
        Hashtable<String, List> ht = new Hashtable<String, List>();
        Set<String> hasAnagram = new HashSet<String>();
        for (String wd : words) {
            if (wd.length() <= 1)
                continue;
            // sort the characters in this word
            char[] chars = wd.toCharArray();
            Arrays.sort(chars);
            String anaKey = String.valueOf(chars);
            // update the list of anagrams
            List<String> anagramList = null;
            if (ht.containsKey(anaKey)) {
                anagramList = ht.get(anaKey);
                hasAnagram.add(anaKey);
            }
            if (anagramList == null) {
                anagramList = new ArrayList<String>();
                anagramList.add(wd);
                ht.put(anaKey, anagramList);
            }
            if (!anagramList.contains(wd)) {
                anagramList.add(wd);
            }
        }
        return ht;
    }
}

Comments

Popular posts from this blog

Ubuntu: Access a usb flash drive from the terminal

    1. Find what the drive is called You'll need to know what the drive is called to mount it. To do that fire off: sudo fdisk -l You're looking for a partition that should look something like:   /dev/sdb1 . Remember what it's called. 2. Create a mount point Create a new directory in   /media   so you can mount the drive onto the filesystem: sudo mkdir /media/usb 3. Mount! sudo mount /dev/sdb1 /media/usb When you're done, just fire off: sudo umount /media/usb Source: StackOverflow

Code for Php based online Treasure Hunt

Hello guys. Some time back I organized an online treasure hunt as part of an event at my college. I thought of sharing the code with you, as you might find it useful. So, I uploaded it on github and here is the link to my repository. Download it from here , and enjoy organizing the game

OS X 10.8 Mountain Lion bootable USB (without MAC)

Download the raw file from here . How to use: 1 - Copy the .raw file to an USB stick using  SUSE Studio Image Writer . If you have error during copy, eject and re-connect the pen drive. When Windows asks if you want to format it, cancel and run Image Writer again. If the problem persists, disable your anti-virus software, it may be blocking raw write to the drive. Another Image Writer for Windows, if SUSE doesn't work https://launchpad.net/win32-image-writer/+download 2 - Boot the USB drive and install. If you need, type  boot options , for example: -v (verbose boot) [default] -x (safe) -s (single user) GraphicsEnabler=yes (enable graphics card drivers) [default] USBBusFix=yes (fix problems with USB devices) npci=0x2000 (use if boot stops at "PCI configuration begin") cpus=1 If you need, use  TransMac  to remove kexts which are causing problems (System/Library/Extensions) and use the flag -f (ignore caches) at boot, or remove /System/Library/Ca