8000 Handle uppercase prefix · trongdth/swift-algorithm-club@9c5a98d · GitHub
[go: up one dir, main page]

Skip to content

Commit 9c5a98d

Browse files
committed
Handle uppercase prefix
1 parent cb64ed6 commit 9c5a98d

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

Trie/Trie/Trie/Trie.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,13 @@ extension Trie {
241241
/// - Returns: the words in the subtrie that start with prefix
242242
func findWordsWithPrefix(prefix: String) -> [String] {
243243
var words = [String]()
244-
if let lastNode = findLastNodeOf(word: prefix) {
244+
let prefixLowerCased = prefix.lowercased()
245+
if let lastNode = findLastNodeOf(word: prefixLowerCased) {
245246
if lastNode.isTerminating {
246-
words.append(prefix)
247+
words.append(prefixLowerCased)
247248
}
248249
for childNode in lastNode.children.values {
249-
let childWords = wordsInSubtrie(rootNode: childNode, partialWord: prefix)
250+
let childWords = wordsInSubtrie(rootNode: childNode, partialWord: prefixLowerCased)
250251
words += childWords
251252
}
252253
}

Trie/Trie/TrieTests/TrieTests.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,5 +183,13 @@ class TrieTests: XCTestCase {
183183
XCTAssertEqual(words2, ["exam", "examination"]);
184184
let noWords = trie.findWordsWithPrefix(prefix: "tee")
185185
XCTAssertEqual(noWords, []);
186+
let unicodeWord = "😬😎"
187+
trie.insert(word: unicodeWord)
188+
let wordsUnicode = trie.findWordsWithPrefix(prefix: "😬")
189+
XCTAssertEqual(wordsUnicode, [unicodeWord]);
190+
trie.insert(word: "Team")
191+
let wordsUpperCase = trie.findWordsWithPrefix(prefix: "Te")
192+
XCTAssertEqual(wordsUpperCase.sorted(), ["team", "test"]);
193+
186194
}
187195
}

0 commit comments

Comments
 (0)
0