本文主要是介绍LeetCode242之有效的字母异位词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、题目
二、两种解题思路
①方法一:
1)介绍:Map辅助法
方法解析:通过Map分别保存两个字符串中每个字母的数量,最后比较两个Map是否相等,相等则两字符串是异位词,否则不是。
时间复杂度:O(n)
空间复杂度:O(n)
2)核心代码:
public static boolean isAnagram(String s, String t) {Map<Object, Integer> letter1 = new HashMap<>();Map<Object, Integer> letter2 = new HashMap<>();char tar1 = '0';char tar2 = '0';for (int i = 0; i < s.length(); i++) {tar1=s.charAt(i);if (!letter1.containsKey(tar1)) {letter1.put(tar1, 0);}Integer sum = letter1.get(tar1);sum++;letter1.put(tar1, sum);}for (int j = 0; j < t.length(); j++) {tar2=t.charAt(j);if (!letter2.containsKey(tar2)) {letter2.put(tar2, 0);}Integer sum = letter2.get(tar2);sum++;letter2.put(tar2, sum);}return letter1.equals(letter2);}
①方法二:
1)介绍:排序法(使用快排或者堆排序)
方法解析:通过快排将两个字符串按照字母重新排序得到新的字符串,最后比较两个字符串是否相等,相等则两字符串是异位词,否则不是。
时间复杂度:O(NlogN)
空间复杂度:O(1)
2)核心代码:略(使用快排即可)
三、LeetCode成功截图
四、感想
感觉自己还没做到最好,希望大家有好方法指教下,加油,加油,再加油,坚持,坚持,再坚持。
这篇关于LeetCode242之有效的字母异位词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!