0% completed
Solution: Valid Anagram
Problem Statement
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, using all the original letters exactly once.
Example 1:
Input: s = "listen", t = "silent"
Output: true
Example 2:
Input: s = "rat", t = "car"
Output: false
Example 3:
Input: s = "hello", t = "world"
Output: false
Constraints:
- 1 <= s.length, t.length <= 5 * 10<sup>5</sup>
sandtconsist of lowercase English letters.
.....
.....
.....
Utsha Saha
· 3 years ago
Return the following:
return sorted(s) == sorted(t)
chidi.nwaka
· 2 years ago
Since our two input strings s and t are only to be comprised of lowercase english letters, this sets the maximum number of unique letters we could encounter to be 26, regardless of string size. Because of this, our mapping of letters to counts is never going to contain more than 26 active keys at any moment. Thus, our space complexity is bounded to O(26) = O(1).
However, the space demand does not grow reliably as a function of the string input size, meaning it is not O(N) space.
adi berkowitz
· 2 years ago
Use a hashmap
from collections import defaultdict class Solution: def isAnagram(self, s, t): # TODO: Write your code here counter = defaultdict(int) for c in s: counter[c] += 1 for c in t: if c in counter: counter[t] -= 1 else: return False return sum(counter.values()) == 0
Văn Trần Phú Quí
· 2 years ago
I found this solution is simpler than posted solution. Just 1 question, do we need to check if length of s and t is equal to other?
class Solution { isAnagram(s, t) { if(s.length !== t.length) return false; for(let i = 0; i < s.length; i++){ if(!t.includes(s[i])){ return false; } } return true; } };
Jayvijay Shah
· 2 years ago
public boolean isAnagram(String s, String t) { int sum1 = 0; int sum2 = 0; for(int i = 0; i < s.length(); i++) { sum1 += (int) s.charAt(i); } for(int i = 0; i < t.length(); i++) { sum2 += (int) t.charAt(i); } return sum1 == sum2; }
kalathilhemanth
· a year ago
class Solution: def isAnagram(self, s, t): char_t = list(t) char_s = list(s) for x in s: try: char_t.remove(x) char_s.remove(x) except: return False if len(char_s) == 0 and len(char_t) == 0: return True return False
jarrett
· a year ago
Sort the characters in the two strings. If they're equal, they're anagrams.
func (sol *Solution) isAnagram(s, t string) bool {
bs := []byte(s)
bt := []byte(t)
slices.Sort([]byte(bs))
slices.Sort([]byte(bt))
if string(bs) == string(bt) {
return true
}
return false
}
It's annoying that the version of Go on this site is ancient - 1.13.
jan.a.szumski
· 6 months ago
if s and t only contain lowercase english letters, then freqMap.keySet() has the size of up to 26. Therefore Hash map validation (second loop) can be considered to run in constant O(1) time, since it iterates at most 26 times.
wasim ahmed
· 5 months ago
class Solution: def isAnagram(self, s, t): # TODO: Write your code here s_list =[0 for i in range(26)] t_list = [0 for i in range(26)] for ch in s: index = ord(ch.upper()) - 65 s_list[index] += 1 for ch in t: index = ord(ch.upper()) - 65 t_list[index] += 1 for i in range(26): if s_list[i] != t_list[i]: return False return True
phuc.do.vinh
· 2 months ago
class Solution { public boolean isAnagram(String s, String t) { int total = 0; String combine = s + t; for (int i = 0; i < combine.length(); i++) { if (i < s.length()) { total += combine.charAt(i); } else { total -= combine.charAt(i); } } return total == 0; } }