之前修改了項(xiàng)目中一個(gè) increment search 的組件,最近剛好又看到下題亿虽,于是想說(shuō)一說(shuō)前后綴匹配的事兒~
這是一個(gè)給定字符串?dāng)?shù)組菱涤,求所有字符串最長(zhǎng)公有前綴的問(wèn)題。
直接用 O(1)
的額外空間來(lái)存儲(chǔ)一個(gè)最長(zhǎng)公有前綴洛勉,一次遍歷后返回前綴字符串粘秆。這個(gè)想法自然到不需要多加解釋?zhuān)欢@么一寫(xiě)竟然擊敗了 100% 的 Swift 提交結(jié)果...
所以不得不提一下十分高效的 hasPrefix(_:)
方法,它接受一個(gè) String
類(lèi)型的參數(shù)并返回 Bool
值收毫,這里字符串大小寫(xiě)敏感攻走,且基于 Unicode 標(biāo)準(zhǔn)等價(jià)殷勘。此外,與之對(duì)應(yīng)用于比較后綴字符串的方法是 hasSuffix(_:)
昔搂。
// Unicode 標(biāo)準(zhǔn)等價(jià)
let composedCafe = "Café"
let decomposedCafe = "Cafe\u{0301}"
print(cafe.hasPrefix(composedCafe))
// Prints "true"
print(cafe.hasPrefix(decomposedCafe))
// Prints "true"