LeetCode 有效的字母异位词(Java)

时间:2019-03-18
本文章向大家介绍LeetCode 有效的字母异位词(Java),主要包括LeetCode 有效的字母异位词(Java)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

有效的字母异位词

题目描述:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

说明:
你可以假设字符串只包含小写字母。

进阶:
如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

代码如下:

public boolean isAnagram(String s, String t) {
        
        if(s.length()!=t.length()){
            return false;
        }
        
        //将字符串中出现的字符以及出的次数存在map里
        Map<Character,Integer> map = new HashMap<Character,Integer>();
        for(int i=0;i<s.length();i++){
            if(!map.containsKey(s.charAt(i))){
                map.put(s.charAt(i),1);
            }else{
                map.put(s.charAt(i),map.get(s.charAt(i))+1);
            }
        }
        
        //遍历另一个字符串,如果匹配到字符,相应的value减一
        for(int j=0;j<t.length();j++){
            if(!map.containsKey(t.charAt(j))){
                return false;
            }
            map.put(t.charAt(j),map.get(t.charAt(j))-1);
            //value值为0的时候,该字符从map中移除
            if(map.get(t.charAt(j))==0){
                map.remove(t.charAt(j));
            }
        }
        
        //当map的长度为0时候,代表两个字符串是字母易位词
        if(map.size()==0){
            return true;
        }
        return false;
    }