moved to Kotlin multiplatform

This commit is contained in:
2023-05-21 23:06:37 +08:00
parent d264690d36
commit 6ca5824944
17 changed files with 214 additions and 88 deletions

View File

@@ -0,0 +1,34 @@
package net.woggioni.klevtree
import net.woggioni.klevtree.node.CharNode
import net.woggioni.klevtree.node.TrieNode
open class CharTrie<PAYLOAD> : Trie<CharNode<PAYLOAD>, Char, PAYLOAD>() {
private class CaseInsensitiveKeyChecker : Keychecker<Char> {
override fun check(key1: Char?, key2: Char?) = key1 == key2
}
private class CaseSensitiveKeyChecker : Keychecker<Char> {
override fun check(key1: Char?, key2: Char?) = key1?.lowercaseChar() == key2?.lowercaseChar()
}
override val root: TrieNode<Char, PAYLOAD> = CharNode(null)
override val tails = mutableListOf<TrieNode<Char, PAYLOAD>>()
override var keyChecker: Keychecker<Char> = CaseSensitiveKeyChecker()
var caseSensitive : Boolean = true
set(value) {
if(value) {
keyChecker = CaseSensitiveKeyChecker()
} else {
keyChecker = CaseInsensitiveKeyChecker()
}
field = value
}
fun add(word : String) = super.add(word.asIterable())
fun search(word : String) : TrieNode<Char, PAYLOAD>? = search(word.asIterable().toList())
fun remove(word : String) = remove(word.asIterable().toList())
}