Skip to content

Check If Two Given Strings are Anagram or Not

Example of anagram strings:

  • Listen == Silent
  • Triangle == Integral
  • William Shakespeare == I am a weakish speller

Note: The string may contain punctuations. You need to ignore punctuations

Implementation

package main

import (
    "fmt"
    "strings"
)

func main() {
    str1 := "William Shakespeare."
    str2 := " I am a weakish speller"
    res := anagram(str1, str2)
    fmt.Println(res)
}

func anagram(str1, str2 string) bool {
    r1 := []rune(strings.ToLower(str1))
    r2 := []rune(strings.ToLower(str2))
    m1 := make(map[rune]int)
    for _, ele := range r1 {
        if (ele >= 97 && ele <= 122) || (ele >= 65 && ele <= 90) {
            m1[ele] = m1[ele] + 1
        }
    }

    m2 := make(map[rune]int)
    for _, ele := range r2 {
        if (ele >= 97 && ele <= 122) || (ele >= 65 && ele <= 90) {
            m2[ele] = m2[ele] + 1
        }
    }

    if len(m1) != len(m2) {
        return false
    }
    for key, val := range m1 {
        if val != m2[key] {
            return false
        }
    }

    return true
}