Advertisement
Guest User

Untitled

a guest
May 25th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. class PrefixMatcher {
  2. private var set = new scala.collection.immutable.TreeSet[String]()
  3. private def successor(s: String) = s.take(s.length - 1) + (s.charAt(s.length - 1) + 1).toChar
  4.  
  5. def add(s: String) = set += s
  6.  
  7. def findMatches(prefix: String): Set[String] =
  8. if (prefix.isEmpty) set
  9. else set.range(prefix, successor(prefix))
  10. }
  11.  
  12. object PrefixMatcherApp extends App {
  13. import scala.io.Source
  14. def time[R](block: => R): R = {
  15. val t0 = System.nanoTime()
  16. val result = block // call-by-name
  17. val t1 = System.nanoTime()
  18. println("Elapsed time: " + (t1 - t0) / 1000000.0 + "ms")
  19. result
  20. }
  21.  
  22. val matcher = new PrefixMatcher()
  23. time {
  24. Source.fromFile("/usr/share/dict/words").getLines.foreach(matcher.add)
  25. }
  26. time {
  27. val matches = matcher.findMatches("ar")
  28. println(matches.size)
  29. }
  30. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement