Skip to content

Commit 90ebe0b

Browse files
authored
KTLN-462 | Sorting a String Alphabetically in Kotlin (#755)
* [Add] unit test * set private val * add inline function * I changed my mind and prefer toCharArray. * prepare revision 1 * rev 1 * move to strings module * Delete core-kotlin-modules/core-kotlin-datastructures-2/src/test/kotlin/com/baeldung/sortalphabetically/SortStringAlphabeticallyUnitTest.kt delete this
1 parent ad22833 commit 90ebe0b

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.baeldung.sortalphabetically
2+
3+
import org.junit.Test
4+
import kotlin.test.assertEquals
5+
6+
class SortStringAlphabeticallyUnitTest {
7+
8+
private fun sortStringWithCharArrayAndSorted(input : String) : String{
9+
return input.toCharArray().sorted().joinToString("")
10+
}
11+
12+
private fun sortStringWithCharArrayAnddistinct(input : String) : String {
13+
return input.toCharArray().sorted().distinct().joinToString("")
14+
}
15+
16+
private fun sortStringWithtoCharArrayAndCompareBy(input: String) : String {
17+
val vowels = setOf('a', 'e', 'i', 'o', 'u')
18+
return input.toCharArray().sortedWith(compareBy<Char> { it in vowels }
19+
.thenBy { it }
20+
).joinToString("")
21+
}
22+
23+
@Test
24+
fun `using toCharArray and then sorted`() {
25+
val inputString = "laibkcedfgjh"
26+
assertEquals("abcdefghijkl", sortStringWithCharArrayAndSorted(inputString))
27+
}
28+
29+
@Test
30+
fun `using sorted and distinct`() {
31+
val inputString = "lakibkcekdghfgjhh"
32+
assertEquals("abcdefghijkl", sortStringWithCharArrayAnddistinct(inputString))
33+
}
34+
35+
@Test
36+
fun `using compareBy`() {
37+
val inputString = "laibkcedfgjh"
38+
assertEquals("bcdfghjklaei", sortStringWithtoCharArrayAndCompareBy(inputString))
39+
}
40+
41+
// If we use extension function
42+
private fun String.sortStringWithCompareBy() : String {
43+
val vowels = setOf('a', 'e', 'i', 'o', 'u')
44+
return toCharArray().sortedWith(compareBy<Char> { it in vowels }
45+
.thenBy { it }
46+
).joinToString("")
47+
}
48+
49+
private fun String.sortAsc() = toCharArray().sorted().joinToString("")
50+
51+
@Test
52+
fun `simplify compareBy with extension`() {
53+
val inputString = "laibkcedfgjh"
54+
assertEquals("bcdfghjklaei", inputString.sortStringWithCompareBy())
55+
}
56+
57+
@Test
58+
fun `simplify toCharArray and sorted with extension`() {
59+
assertEquals("abcde", "cdbae".sortAsc())
60+
}
61+
}

0 commit comments

Comments
 (0)