image.png

解决思路

map

使用一个数组记录26个字母a出现的次数,对于s记录其中每个字母的数字。
然后对于t,对该数组中减去每个数组中的次数
最后判断,如果有不是0的数值,说明不是

  1. public boolean isAnagram(String s, String t) {
  2. //记录每个字母出现的次数
  3. int[] alph = new int[26];
  4. //累加
  5. for(char c:s.toCharArray()){
  6. alph[c-'a']++;
  7. }
  8. //累减
  9. for(char c:t.toCharArray()){
  10. alph[c-'a']--;
  11. }
  12. //如果有不是0的,则不是
  13. for(int i=0;i<26;i++){
  14. if(alph[i]!=0)
  15. return false;
  16. }
  17. return true;
  18. }