美文网首页
有效的字母异位词(leetcode)

有效的字母异位词(leetcode)

作者: 9156523 | 来源:发表于2019-05-14 11:08 被阅读0次
    /**
     * 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。
     *
     * 示例 1:
     *
     * 输入: s = "anagram", t = "nagaram"
     * 输出: true
     * 示例 2:
     *
     * 输入: s = "rat", t = "car"
     * 输出: false
     * 说明:
     * 你可以假设字符串只包含小写字母。
     *
     * 进阶:
     * 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?
     */
    

    方法1:

    可以直接使用Hashmap,把第一个字符串保存到map中,第二个字符串判断是否都存在,key为字符串的每一个字符,value为出现的次数,时间复杂度为O(n*n)

          public boolean isAnagram(String s, String t) {
    
            if(s.length() != t.length()) return false;
    
            HashMap<Character,Integer> map = new HashMap<>();
            //把s对应的值存入map中,统计出现的次数
            for(int i = 0;i<s.length();++i){
                if(map.containsKey(s.charAt(i))){
                    int value = map.get(s.charAt(i));
                    map.put(s.charAt(i),++value);
                }
    
                else{
                    map.put(s.charAt(i),1);
                }
            }
            //从map中获取key判断是否相等,然后次数减1
            for(int j = 0;j<t.length();++j){
                if (map.containsKey(t.charAt(j))){
                    int value = map.get(t.charAt(j));
                    if(value>0) map.put(t.charAt(j),--value);
                    else return false;
                }else{
                    return false;
                }
            }
    
            return true;
        }
    

    方法2:

    建立一个26长度的整型数组,获取第一个字符串的每一个字符减去‘a’,这样就可以计算出下标,然后value+1表示重复的个数,最后第二个字符串-1表示匹配的次数

        public boolean isAnagram2(String s,String t){
            if(s.length() != t.length()) return false;
    
            int has[] = new int[26];
            //记录了数目同时也知道了是哪一个,同时做对比 
            for(int i = 0;i<s.length();++i){
                has[s.charAt(i)-'a']++;
                has[t.charAt(i)-'a']--;
            }
    
            for (int ha : has) {
                if(ha !=0) return false;
            }
    
    
            return true;
        }
    

    相关文章

      网友评论

          本文标题:有效的字母异位词(leetcode)

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