Michael (mikkim08) wrote in ru_scala,
Michael
mikkim08
ru_scala

Общее окончание

Услышал, что в одной конторе для первичного отбора кандидатов просили написать программу поиска самого длинного общего окончания у нескольких строк. Задача несложная, но хочется написать функционально, просто и эффективно, т.е. не менее эффективно чем императивное решение.

Для 2х строк получилось так:
def commonSuffix(s1: String, s2: String): String = {
  val n = (s1.reverseIterator zip s2.reverseIterator)
            .takeWhile {case (a, b) => a == b}
            .size
  s1.substring(s1.length - n) // is substring efficient ?
}
А как найти общее окончание для нескольких строк ?
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 2 comments