Find all the words in a list that are next to a given word | shanhe.me



Find all the words in a list that are next to a given word | shanhe.me

There is a list of four-letter words, such as aahs, aals, abas, abba, etc. Given an arbitrary four-letter word, find all the words in the list that are next to the given word, i.e., words that can be the same as the given word with exactly one letter changed. Example: given puma, the result could be duma, pima, puja, pula, pump, puna, pupa.

We use an index-based solution, and we give the result containing unique and sorted words from the list.

Suppose we look up words for puma, then we

  1. find words from the list that have the pattern ?uma with ? less than p.
  2. find words from the list that have the pattern p?ma with ? less than u.
  3. find words from the list that have the pattern pu?a with ? less than m.
  4. find words from the list that have the pattern pum? with ? less than a.
  5. find words from the list that have the pattern pum? with ? greater than a.
  6. find words from the list that have the pattern pu?a with ? greater than m.
  7. find words from the list that have the pattern p?ma with ? greater than u.
  8. find words from the list that have the pattern ?uma with ? greater than p.

and combine the results in the order of the steps to get the final result. Note that if the result from each step contains unique and sorted words, then the final list contains unique and sorted words.

The index for unique and sorted words from the list matching a pattern like ?uma with ? less than or greater than p can be designed like


Read full article from Find all the words in a list that are next to a given word | shanhe.me


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts