给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若s 和 t中每个字符出现的次数都相同,则称s 和 t互为字母异位词。
输入: s = “anagram”, t = “nagaram”
输出: true
输入: s = “rat”, t = “car”
输出: false
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
| /** * 一般判断是否有数字存在存在过,都是使用哈希映射 * 一般的映射包括 数组、set、哈希表 * 本题目较简单,仅仅使用数组即可解决 * 由于使用题目说道只是小写字母,所以就需要一个额外存储空间,大小为26的数组 * 1、将 s 串字符拆分放到数组中,相同字符,数字+1 * 2、将 t 串字符拆分遍历,判断在数组中数字-1 * 3、判断数组各项值是否都是0 */ public boolean isAnagram(String s, String t) { int[] temp = new int[26]; char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { char aChar = chars[i]; int a = aChar - 'a';//a为最小的下标,初始值0 temp[a]++; } char[] chart = t.toCharArray(); for (int i = 0; i < chart.length; i++) { int b = chart[i] - 'a'; temp[b]--; } for (int i = 0; i < temp.length; i++) { if (temp[i] != 0) { return false; } } return true; }
|