Popis problému Celý popis zadania sa nacháza – Hackerrank. Riešenie Porovnávaj postupne znaky v reťazcoh od ich začiatku na rovnakých pozíciách. Ak nájdeme nerovnaké, prefix zodpovedá všetkých rovnakým znakom nájdených dovtedy. Vytvoril som riešenie v týchto programovacích jazykoch: Scala Všetky riešenia sú dostupné aj na mojom GitHub profile. Scala
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
object PrefixCompression extends App { val lines = io.Source.stdin.getLines.toArray val a = lines(0) val b = lines(1) val prefix = commonPrefix(a, b, 0) println(prefix + " " + a.substring(0, prefix)) println((a.length - prefix) + " " + a.substring(prefix)) println((b.length - prefix) + " " + b.substring(prefix)) private def commonPrefix(a : String, b: String, index: Int): Int = { if(index < 0) { return 0 } if(index == a.length) { return index } if(index == b.length) { return index } if(a.charAt(index) == b.charAt(index)) { return commonPrefix(a, b, index + 1) } return index } } |