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