Given two strings s
and t
, return true
if t
is an anagram of s
, and false
otherwise.
An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.
Eg one:
Input: s = "anagram", t = "nagaram"
Output: true
Eg two:
Input: s = "rat", t = "car"
Output: false
Solution:
class Solution {
public boolean isAnagram(String s, String t) {
int[] arr = new int[26];
for(int i = 0; i < s.length(); i++){
arr[s.charAt(i) - 'a']++ ;
}
for(int j = 0; j < t.length(); j++){
arr[t.charAt(j) - 'a']--;
}
for(int i = 0; i < arr.length; i++){
if(arr[i] != 0) return false;
}
return true;
}
}
Hints:
1: Understand why we need to use ASII to solve the problem:
2: Make sense why arr[s.charAt(i) - 'a']++ / arr[t.charAt(j) - 'a']-- :
- every letter minus the same letter 'a' or 'c', then there will be different places in the array
- then everytime the value of be ++ or --
3: It is better to write some examples by hand