题目
编写一个函数,判断两个字符串是否是相互打乱的,也就是它们有着相同的字符,但是对应不同的顺序
代码
package main
import (
"fmt"
"os"
)
func disorder(s1, s2 string) bool { //判断两个字符串是否是相互打乱的
var count1, count2 int //count1 记录两个字符串中是否都有某个字符,
//count2 记录若都有这个字符,那么位置是否相等
if len(s1) != len(s2) { //若两个字符串不相等,那么肯定不是相互打乱的
return false
}
for index1, value1 := range s1 {
for index2, value2 := range s2 {
if value1 == value2 {
count1++ //对于s1中的某个字符,若s2有相等字符,则count1加1
if index1 == index2 {
count2++ //若不仅都有这个字符,而且位置也相等,则count2加1
}
break //既然在s2中找到了相等的字符,就进入s1下一个字符查找
}
if index2 == len(s2)-1 { //s2遍历到最后一个元素时,还找不到与s1相等的字符,则
return false //肯定不是相互打乱的
}
}
}
if count1 == count2 { //到这一步,说明s1和s2的字符相等,若位置相等的次数与字符相等
return false //的次数一样,说明s1和s2顺序一样,不是相互打乱的
}else{
return true
}
}
func main() {
a := disorder(os.Args[1], os.Args[2])
if a == true {
fmt.Printf("%s 和 %s 是相互打乱的", os.Args[1], os.Args[2])
}else {
fmt.Printf("%s 和 %s 不是相互打乱的", os.Args[1], os.Args[2])
}
}
测试
有疑问加站长微信联系(非本文作者))
