mirror of
https://github.com/neon443/StickerSlack.git
synced 2026-03-11 13:26:17 +00:00
fix not being marked as end of word
This commit is contained in:
@@ -19,7 +19,8 @@ class Trie: ObservableObject {
|
|||||||
|
|
||||||
func insert(word: String) {
|
func insert(word: String) {
|
||||||
var currentNode = root
|
var currentNode = root
|
||||||
for char in word {
|
for i in word.indices {
|
||||||
|
let char = word[i]
|
||||||
if let node = currentNode.children[char] {
|
if let node = currentNode.children[char] {
|
||||||
print("node \(char) exists")
|
print("node \(char) exists")
|
||||||
currentNode = node
|
currentNode = node
|
||||||
@@ -27,6 +28,10 @@ class Trie: ObservableObject {
|
|||||||
print("node \(char) didnt exist creating")
|
print("node \(char) didnt exist creating")
|
||||||
currentNode.children[char] = TrieNode()
|
currentNode.children[char] = TrieNode()
|
||||||
currentNode = currentNode.children[char]!
|
currentNode = currentNode.children[char]!
|
||||||
|
if i == word.indices.last {
|
||||||
|
print("marking \(char) as end of word")
|
||||||
|
currentNode.isEndOfWord = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,7 +40,7 @@ class Trie: ObservableObject {
|
|||||||
struct TrieTestingView: View {
|
struct TrieTestingView: View {
|
||||||
@ObservedObject var trie: Trie = Trie()
|
@ObservedObject var trie: Trie = Trie()
|
||||||
@State var id: UUID = UUID()
|
@State var id: UUID = UUID()
|
||||||
@State var newWord: String = ""
|
@State var newWord: String = "hello"
|
||||||
@State var searchTerm: String = ""
|
@State var searchTerm: String = ""
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
@@ -65,9 +70,11 @@ struct TrieNodeView: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
ForEach(trieNode.children.map { $0.key }, id: \.self) { key in
|
ForEach(trieNode.children.map { $0.key }, id: \.self) { key in
|
||||||
|
let node = trieNode.children[key]!
|
||||||
Text(String(key))
|
Text(String(key))
|
||||||
|
.foregroundStyle(node.isEndOfWord ? .red : .primary)
|
||||||
.frame(width: 20, height: 20)
|
.frame(width: 20, height: 20)
|
||||||
TrieNodeView(trieNode: trieNode.children[key]!)
|
TrieNodeView(trieNode: node)
|
||||||
.padding(.leading, 20)
|
.padding(.leading, 20)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user