242. 有效的字母異位詞

一、題目原型:

給定兩個(gè)字符串 s 和 t ,編寫一個(gè)函數(shù)來(lái)判斷 t 是否是 s 的一個(gè)字母異位詞。

二、示例剖析:

 示例 1:
 輸入: s = "anagram", t = "nagaram"
 輸出: true
 
 示例 2:
 輸入: s = "rat", t = "car"
 輸出: false
 
 說(shuō)明:
 你可以假設(shè)字符串只包含小寫字母。
 
 進(jìn)階:
 如果輸入字符串包含 unicode 字符怎么辦?你能否調(diào)整你的解法來(lái)應(yīng)對(duì)這種情況?

三、解題思路:

1.第一想到的就是排下序,然后比對(duì)。

func isAnagram(_ s: String, _ t: String) -> Bool {
    if s.count != t.count {
        return false
    }
    if s.sorted() == t.sorted() {
        return true
    }
    return false
}

2.用ASCII碼

func isAnagram(_ s: String, _ t: String) -> Bool {
    
    if s.count != t.count {
        return false
    }
    
    var counter_s = Array.init(repeating: 0, count: 26)
    var counter_t = Array.init(repeating: 0, count: 26)
    
    var char_s = s.cString(using: String.Encoding.utf8)
    var char_t = t.cString(using: String.Encoding.utf8)
    // 因?yàn)?cString方法默認(rèn)會(huì)在末尾加上空字符,ASCII碼為0
    // 所以需要將其刪除 
    char_s?.removeLast()
    char_t?.removeLast()
    
    for char in char_s! {
        let index = Int(char - 97)
        counter_s[index] += 1
    }
    
    for char in char_t! {
        let index = Int(char - 97)
        counter_t[index] += 1
    }
    print(char_s,char_t)
    return counter_s == counter_t
}

3.用ASCII碼,.unicodeScalars方法,省去了刪除最后的空字符的操作

func isAnagram(_ s: String, _ t: String) -> Bool {
    if s.count != t.count {
        return false
    }
    var counter_s = Array.init(repeating: 0, count: 26)
    var char_s = s.unicodeScalars
    for char in char_s {
        let index = Int(char.value - 97)
        counter_s[index] += 1
    }
    var counter_t = Array.init(repeating: 0, count: 26)
    var char_t = t.unicodeScalars
    for char in char_t {
        let index = Int(char.value - 97)
        counter_t[index] += 1
    }
    print(char_s,char_t)
    return counter_s == counter_t
}

四、小結(jié)

1.耗時(shí)524毫秒,超過(guò)16.13%的提交記錄,總提交數(shù)34
2.耗時(shí)148毫秒,超過(guò)70.97%的提交記錄,總提交數(shù)34。
3.耗時(shí) 44 毫秒,超過(guò)93.55%的提交記錄,總提交數(shù)34。
個(gè)人博客地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容