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

每日算法题—字母异位词

作者: 程田 | 来源:发表于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