Skip to content

Commit

Permalink
chore(Go): add anagram (MakeContributions#834)
Browse files Browse the repository at this point in the history
  • Loading branch information
Ishantgarg-web authored Sep 11, 2022
1 parent 7db2f01 commit 7f85abf
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
1 change: 1 addition & 0 deletions algorithms/Go/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,5 @@

## String
- [Palindrome Permutation](strings/palindrome-permutation.go)
- [Anagram](strings/anagram.go)

55 changes: 55 additions & 0 deletions algorithms/Go/strings/anagram.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
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
}

0 comments on commit 7f85abf

Please sign in to comment.