美文网首页
每日算法题—字母异位词

每日算法题—字母异位词

作者: 程田 | 来源:发表于2019-10-02 01:22 被阅读0次

    字母异位词

    字母异位词即两个字符串中每种字符的个数相等,类似于同一个字符串不同的字符顺序,如:
    aaabbccc和babaccac 是字母异位词
    aaabb 和aabbb 则不是字母异位词
    来源:https://leetcode-cn.com/problems/valid-anagram/

    问题

    判断两个字符串是否为字母异位词

    思路

    字母异位词具有一个特性就是:每种字符的个数相等
    所以可以统计两个字符串中每种字符的个数,如果每种字符的个数相等,则是字母异位词
    工具:map

    实现

    fun isAnagram(s: String, t: String): Boolean {
            if (s.length != t.length) {//如果两个字符串长度都不一样,不用比了,肯定不是
                return false
            }
            val sMap = HashMap<Char, Int>()
            s.toCharArray().forEach {//遍历s字符串,统计其字符种类和个数
                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中字符种类的个数减1,如果最后map中存在不为0的,则说明两个字符串的该字符种类的个数不一致
            }
            for (value in sMap.values) {
                if (value != 0) {
                    return false
                }
            }
            return true
        }
    

    相关文章

      网友评论

          本文标题:每日算法题—字母异位词

          本文链接:https://www.haomeiwen.com/subject/xgrxpctx.html