chore(Go): add anagram (#834)
parent
7db2f01de7
commit
7f85abfa31
|
@ -27,4 +27,5 @@
|
|||
|
||||
## String
|
||||
- [Palindrome Permutation](strings/palindrome-permutation.go)
|
||||
- [Anagram](strings/anagram.go)
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
Loading…
Reference in New Issue