/**
* @Author li
* @Date 11/7/21 1:06 PM
* @Version 1.0
*
* 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
*
* 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
* 示例 1:
* 输入: s ="anagram", t ="nagaram"
* 输出: true
* 示例 2:
* 输入: s ="rat", t ="car"
* 输出: false
*/
public class IsAnagram {
public static void main(String[] args){}
public boolean isAnagram(String s, String t){if(s.length()!=t.length()){returnfalse;}
int [] table = new int[26];for(int i =0;i<s.length();i++){
table[s.charAt(i)-'a']++;}for(int i =0;i<t.length();i++){
table[t.charAt(i)-'a']--;if(table[t.charAt(i)-'a']<0){returnfalse;}}returntrue;}
public boolean isAnagram1(String s, String t){
char[] chars = s.toCharArray();
char[] chars1 = t.toCharArray();
Arrays.sort(chars);
Arrays.sort(chars1);return Arrays.equals(chars, chars1);}}
思路:利用数组数组做一个hash表,因为题目对于数值有限制,所以可以用数组做hash表,创建一个长度为26的数组,26个小写字母按照顺序存入数组对应的索引,然后将对应索引里面的🈯️进行+1,然后再把另一个字符串进行遍历,也像上一部那样进行索引对应计算,但是找到对应索引时进行--,当值小于0时,那一定不相同。