DSA/algorithms/Go/strings/anagram.go

56 lines
1.0 KiB
Go

package main
/**
Problem Statement: Given two strings s and t, find they are anagrams or not
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
***/
/***
Time complexity: O(n), n=length of string s
Space complexity: O(1)
**/
import "fmt"
func main() {
fmt.Println("Enter first string")
var first string
fmt.Scanln(&first)
fmt.Println("Enter second string")
var second string
fmt.Scanln(&second)
ans := isAnagram(first, second)
if ans == true {
fmt.Println("They are anagrams")
} else {
fmt.Println("They are not anagrams")
}
}
func isAnagram(s string, t string) bool {
var count [256]int
//var i int
for i := 0; i < len(s); i++ {
count[s[i]]++
}
for i := 0; i < len(t); i++ {
count[t[i]]--
}
for i := 0; i < len(count); i++ {
if count[i] != 0 {
return false
}
}
return true
}