packagemainimport("fmt""sort")funcisTwin(sstring,tstring)string{var(oddS[]intevenS[]intoddT[]intevenT[]intsByte=[]byte(s)tByte=[]byte(t))iflen(sByte)!=len(tByte){return"No"}fori:=0;i<len(sByte);i++{ifi&1==1{oddS=append(oddS,int(sByte[i]))oddT=append(oddT,int(tByte[i]))}else{evenS=append(evenS,int(sByte[i]))evenT=append(evenT,int(tByte[i]))}}sort.Sort(sort.IntSlice(oddS))sort.Sort(sort.IntSlice(oddT))sort.Sort(sort.IntSlice(evenS))sort.Sort(sort.IntSlice(evenT))fori:=0;i<len(oddS);i++{ifoddS[i]!=oddT[i]{return"No"}}fori:=0;i<len(evenS);i++{ifevenS[i]!=evenT[i]{return"No"}}return"YES"}funcmain(){/*
双胞胎字符串
问题描述: 给定两个字符串 s 和 t,每次可以任意交换 s 的奇数位或偶数位上的字符,问能否经过若干次交换,使 s 变成 t
问题示例: s = "abcd" t = "cdab" 输出: "YES", s = "abcd" t = "bcda" 输出: "NO"
*/s:="abcd"t:="bcda"fmt.Println(isTwin(s,t))}