56 lines
1.0 KiB
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
|
|
}
|