package main
import "fmt"
/**
题目:
1.给定两个字符串str1和str2
2. 如果str1和str2中出现的字符种类一样且每种字符出现的次数也一样,
那么str1和str2互为变形词实现函数判断两个字符串是否为互为变形词
eg:
str1="123" str2="231",返回true
str1="123" str2="2331",返回false
*/
func main() {
// 测试数据
str := "123245364"
str1 := "123245364"
str2 := "122345364"
str3 := "112345364"
if isDeformation(str, str1) {
fmt.Println("str and str1 is deformation of words")
}
if isDeformation(str, str2) {
fmt.Println("str and str2 is deformation of words")
}
if isDeformation(str, str3) {
fmt.Println("str and str3 is deformation of words")
}
}
func isDeformation(str1 string, str2 string) bool {
// 其中一个为空,或者长度不一致直接返回false
if str1 == "" || str2 == "" || len(str1) != len(str2) {
return false
}
// 使用一个map存储字符对应的统计数
strMap := make(map[string]int64, 0)
for _, char := range str1 {
strMap[string(char)]++
}
for _, char := range str2 {
strMap[string(char)]--
}
for _, total := range strMap {
if total != 0 {
return false
}
}
return true
}
打印结果:
str and str1 is deformation of words
str and str2 is deformation of words