每日算法題—字母異位詞

字母異位詞

字母異位詞即兩個(gè)字符串中每種字符的個(gè)數(shù)相等,類似于同一個(gè)字符串不同的字符順序,如:
aaabbccc和babaccac 是字母異位詞
aaabb 和aabbb 則不是字母異位詞
來源:https://leetcode-cn.com/problems/valid-anagram/

問題

判斷兩個(gè)字符串是否為字母異位詞

思路

字母異位詞具有一個(gè)特性就是:每種字符的個(gè)數(shù)相等
所以可以統(tǒng)計(jì)兩個(gè)字符串中每種字符的個(gè)數(shù),如果每種字符的個(gè)數(shù)相等,則是字母異位詞
工具:map

實(shí)現(xiàn)

fun isAnagram(s: String, t: String): Boolean {
        if (s.length != t.length) {//如果兩個(gè)字符串長(zhǎng)度都不一樣,不用比了,肯定不是
            return false
        }
        val sMap = HashMap<Char, Int>()
        s.toCharArray().forEach {//遍歷s字符串,統(tǒng)計(jì)其字符種類和個(gè)數(shù)
            val value: Int? = sMap[it]
            sMap[it] = if (value == null) 1 else value + 1
        }
        t.toCharArray().forEach {//再遍歷t字符串
            val value = sMap[it] ?: return false//t字符串中有字符在s中沒有,則肯定不是字母異位詞
            sMap[it] = value - 1//將map中字符種類的個(gè)數(shù)減1,如果最后map中存在不為0的,則說明兩個(gè)字符串的該字符種類的個(gè)數(shù)不一致
        }
        for (value in sMap.values) {
            if (value != 0) {
                return false
            }
        }
        return true
    }
最后編輯于
?著作權(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)容