1. question: 有效的字母异位词(简单)
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-anagram
示例 1:
1 2
| 输入: s = "anagram", t = "nagaram" 输出: true
|
示例 2:
1 2
| 输入: s = "rat", t = "car" 输出: false
|
提示:
1 2
| 1 <= s.length, t.length <= 5 * 104 s 和 t 仅包含小写字母
|
2. answers
这道题还是比较简单的,采用哈希表来存储每个字符的个数。遍历第一个字符串的时候,增加字符个数,遍历第二个字符串的时候,减少字个数。最后判断哈希表是否还有不为0的字符(如果在遍历的时候,设置好判断条件,其实这一步也可以不用写)。代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public class Solution_0044 {
public static boolean isAnagram(String s, String t) {
if(s.length() != t.length()) return false;
HashMap<Character, Integer> hashMap = new HashMap<>();
char[] chars = s.toCharArray(); char[] chars1 = t.toCharArray();
for(char c: chars) {
Integer integer = hashMap.get(c); if(integer != null) { hashMap.put(c, integer + 1); } else { hashMap.put(c, 1); } }
for(char c: chars1) { Integer integer = hashMap.get(c);
if(integer == null || integer == 0) return false; else { hashMap.put(c, integer - 1); } }
return true; }
public static void main(String[] args) { System.out.println();
String s = "asdfa"; String t = "asdff";
System.out.println(isAnagram(s, t)); } }
|
3. 备注
参考力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 (leetcode-cn.com),代码随想录 (programmercarl.com)。