DEV Community

Bhupesh Kumar
Bhupesh Kumar

Posted on

242. 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, typically using all the original letters exactly once.

Example 1:

Input: s = "anagram", t = "nagaram"
Output: true

Example 2:

Input: s = "rat", t = "car"
Output: false
Enter fullscreen mode Exit fullscreen mode

Constraints

1 <= s.length, t.length <= 5 * 104
s and t consist of lowercase English letters

Approach 1: Using Hashmap

This code utilizes a HashMap to track the occurrences of characters in one string and adjusts these counts based on the characters in the second string. By ensuring that all character counts become zero, it confirms if the strings are basic anagrams of each other.

class Solution {
    public boolean isAnagram(String s, String t) {

        Map<Character, Integer> mp = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            mp.put(ch, mp.getOrDefault(ch, 0) + 1);
        }

        for (int i = 0; i < t.length(); i++) {
            char ch = t.charAt(i);
            if (!mp.containsKey(ch) || mp.get(ch) == 0) {
                return false;
            }
            mp.put(ch, mp.get(ch) - 1);
        }     

        for (int count : mp.values()) {
            if (count != 0) {
                return false;
            }
        }

        return true;

    }
}
Enter fullscreen mode Exit fullscreen mode

Runtime: 16ms

Approach 2: Using Arrays

import java.util.Arrays;

class Solution {
    public boolean isAnagram(String s, String t) {
        // Check if lengths are equal, if not, they can't be anagrams
        if (s.length() != t.length())
            return false;

        // Convert strings to character arrays
        char[] sChars = s.toCharArray();
        char[] tChars = t.toCharArray();

        // Sort character arrays
        Arrays.sort(sChars);
        Arrays.sort(tChars);

        // Compare sorted character arrays
        return Arrays.equals(sChars, tChars);
    }
}

Enter fullscreen mode Exit fullscreen mode

Runtime: 4ms

Approach 3: Hash Table (Using Array)

class Solution {
    public boolean isAnagram(String s, String t) {
        // Create an array to store the count of occurrences of each character (26 lowercase letters)
        int[] count = new int[26];

        // Iterate through the characters of string s
        for (char x : s.toCharArray()) {
            // Increment the count for the character 'x' (subtracting 'a' gives the index corresponding to 'x')
            count[x - 'a']++;
        }

        // Iterate through the characters of string t
        for (char x : t.toCharArray()) {
            // Decrement the count for the character 'x' (subtracting 'a' gives the index corresponding to 'x')
            count[x - 'a']--;
        }

        // Check if all counts in the array are zero
        for (int val : count) {
            if (val != 0) {
                // If any count is not zero, return false indicating strings are not anagrams
                return false;
            }
        }

        // If all counts are zero, return true indicating strings are anagrams
        return true;
    }
}
Enter fullscreen mode Exit fullscreen mode

Runtime: 2ms

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay