首页 > 其他分享 >242. Valid Anagram [Easy]

242. Valid Anagram [Easy]

时间:2023-01-09 13:57:17浏览次数:63  
标签:tMap return String length Valid Easy Anagram HashMap

242. Valid Anagram

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Constraints:

  • 1 <= s.length, t.length <= 5 * 104
  • s and t consist of lowercase English letters.

思路

  • 无脑:比较一个字符串中每一个字符是否是另外一个字符串永远的,没有就返回
  • 想一想:本质上就是看两个字符串所组成的字符个数是否相等,如果相等那无论怎么重排序都能满足条件 (出现次数 -> HahMap)
  • Tricky:

题解

  • 无脑
        if (s.length() != t.length())
            return false;
	// 把其中字符串转成List,
        List<String> data = new ArrayList(Arrays.asList(s.split("")));
	// O(n)
        for (char val : t.toCharArray()) {
	    // 集合中 String 不能直接和 Char 做比较,先转成String
            String cur = String.valueOf(val);
	    // O(n) 所以总的就是O(n^2) 三种里面时间复杂度最高
            if (!data.contains(cur))
                return false;
            data.remove(cur);
        }
        return data.isEmpty();
  • 想一想
    public boolean isAnagram(String s, String t) {
	// 如果长度不等肯定不满足条件,直接返回
        if (s.length() != t.length())
            return false;
        HashMap<Character, Integer> sMap = new HashMap<>();
        HashMap<Character, Integer> tMap = new HashMap<>();
        char[] sChar = s.toCharArray();
        char[] tChar = t.toCharArray();
	// 因为做了长度判断,所以长度一定是相等的,那一次for就够了,统计两个字符串中每个字符出现的次数
	// O(n)
        for (int i = 0; i < sChar.length; i++) {
            sMap.put(sChar[i], sMap.getOrDefault(sChar[i], 0) + 1);
            tMap.put(tChar[i], tMap.getOrDefault(tChar[i], 0) + 1);
        }
	// 这里用的是包装类,已经重写过equals和hashcode了,如果是自定义类别忘了重写!
        return sMap.equals(tMap);
    }
}

标签:tMap,return,String,length,Valid,Easy,Anagram,HashMap
From: https://www.cnblogs.com/tanhaoo/p/17036789.html

相关文章

  • [oeasy]python0041_ 转义字符_转义序列_escape_序列_sequence
    转义序列回忆上次内容上次回顾了5bit-Baudot博多码的来历从莫尔斯码到博多码原来人来收发电报现在机器来收发电报输入方式从电键改成键盘......
  • 217. Contains Duplicate [Easy]
    217.ContainsDuplicateGivenanintegerarraynums,returntrueifanyvalueappearsatleasttwiceinthearray,andreturnfalseifeveryelementisdistinc......
  • [GYCTF2020]Easyphp
    [GYCTF2020]Easyphp考点:反序列化的对象逃逸非常典型的登陆界面,随便输了输,发现存在admin用户,猜测是弱口令,拿字典跑了一遍,无果按照以往的做题经验,觉得可能有源码泄露,尝试/......
  • [SUCTF 2019]EasyWeb
    [SUCTF2019]EasyWeb考点:1、文件上传bypass 2、.htaccess的利用开局源代码<?phpfunctionget_the_flag(){//webadminwillremoveyouruploadfileevery20m......
  • [oeasy]python0041_teletype历史_博多码_shift_capslock_字符数字切换_gear
    teletypewriter历史回忆上次内容上次见到了一个真的机械打字机感受到了蒸汽朋克的时代背景上上次区分了一些概念terminal终端,电脑连线最终的端点TeleTYpewr......
  • leetcode-409-easy
    LongestPalindromeGivenastringswhichconsistsoflowercaseoruppercaseletters,returnthelengthofthelongestpalindromethatcanbebuiltwiththose......
  • leetcode-345-easy
    ReverseVowelsofaStringGivenastrings,reverseonlyallthevowelsinthestringandreturnit.Thevowelsare'a','e','i','o',and'u',andtheycan......
  • leetcode-643-easy
    MaximumAverageSubarrayIYouaregivenanintegerarraynumsconsistingofnelements,andanintegerk.Findacontiguoussubarraywhoselengthisequalto......
  • leetcode-496-easy
    NextGreaterElementIThenextgreaterelementofsomeelementxinanarrayisthefirstgreaterelementthatistotherightofxinthesamearray.Youar......
  • leetcode-521-easy
    LongestUncommonSubsequenceIGiventwostringsaandb,returnthelengthofthelongestuncommonsubsequencebetweenaandb.Ifthelongestuncommonsubseq......