Saturday, November 7, 2015

[2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer



[2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer
Help! My keyboard is broken, only a few keys work any more. If I tell you what keys work, can you tell me what words I can write?
(You should use the trusty enable1.txt file, or /usr/share/dict/words to chose your valid English words from.)

Input Description

You'll be given a line with a single integer on it, telling you how many lines to read. Then you'll be given that many lines, each line a list of letters representing the keys that work on my keyboard. Example:
3  abcd  qwer  hjklo  

Output Description

Your program should emit the longest valid English language word you can make for each keyboard configuration.
abcd = bacaba  qwer = ewerer  hjklo = kolokolo

X. Using Regular Expression
public static String find(List<String> dict, String keyboard) {
    return dict.stream()
            .filter(word -> word.matches("[" + keyboard + "]+"))
            .max(new Comparator<String>() {
                @Override public int compare(String arg0, String arg1) {
                    return Integer.compare(arg0.length(), arg1.length());
                }
            }).get();
}

public static Optional<String> find(String keyboard) throws IOException {
    try (Stream<String> dict = Files.lines(Paths.get("enable1.txt"))) {
        return dict
          .filter(word -> word.matches("[" + keyboard + "]+"))
          .max(Comparator.comparing(String::length));
    }
}

            List<String> li = Files.readAllLines(new File("enable1.txt").toPath(), Charset.forName("UTF-8"));
            String[] keys = {"abcd", "qwer", "hjklo"};
            for (String str: keys) {
                Pattern pat = Pattern.compile("^([" + str + "]+)$");
                String out = li.stream()
                        .filter((s) -> pat.matcher(s).find())
                        .reduce("", (a, b) -> a.length() >= b.length() ? a : b);
                System.out.printf("Keys %s -> %s\n", str, out);

X. not efficient
    public static void main(String[] args) {
        File dictFile = new File(filePath);
        try {
            dictArray = Files.readAllLines(dictFile.toPath());
        } catch (IOException e) {
            e.printStackTrace();
        }

        for (String key : keys) {
            for (String words : dictArray) {
                String temp = words;
                char[] charArray = key.toCharArray();
                for (char chars : charArray)
                    temp = temp.replace(Character.toString(chars), "");
                if (temp.equals(""))
                    if (found.length() < words.length())
                        found = words;
            }
            foundArray.add(found);
            found = "";
        }
        System.out.println(foundArray);
    }
Read full article from [2015-10-19] Challenge #237 [Easy] Broken Keyboard : dailyprogrammer

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts