Reverse Sentence
Reverse the words in a sentence—i.e., “My name is Chris” becomes “Chris is name My.”
package algorithmdesignmanualbook.datastructures
import _utils.UseCommentAsDocumentation
import algorithmdesignmanualbook.print
import kotlin.test.assertEquals
/**
 * Reverse the words in a sentence—i.e., “My name is Chris” becomes “Chris is name My.”
 */
@UseCommentAsDocumentation
private fun reverse(str: String): String {
    val split = str.split(" ")
    if (split.size <= 1) {
        return "$str."
    }
    val sb = StringBuilder(str.length + 1)
    for (i in split.lastIndex downTo 0) {
        sb.append(split[i])
        if (i != 0) {
            sb.append(" ")
        }
    }
    sb.append(".")
    return sb.toString().print()
}
fun main() {
    assertEquals(expected = "Chris is name My.", actual = reverse("My name is Chris"))
}
Updated on 2021-02-08