go判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但 是对应不同的顺序。

package main

import (
	"fmt"
	"strings"
	"unicode/utf8"
)

func main() {
	fmt.Println(string([]rune("starting chat...")[2]))
	fmt.Println(string([]rune("你好,世界!")), []byte("你好,世界!"))
	fmt.Println("你好,世界!"[:2], "hello,world!"[:2], []rune("你好,世界"))
	fmt.Println("\\", utf8.RuneCountInString("你好,世界!"))
	fmt.Println(string(1234567))
	fmt.Println("------------------------------------------------")

	str1 := "abcdefgw我habc"
	str2 := "ebadcgfh我cbaw"

	// fmt.Println(RemoveTheSame(str1))
	fmt.Println(IsSame(str1, str2))

}

// slice去重处理
func RemoveTheSame(s string) string {
	s1 := []string{}
	m := make(map[int]string)
	for _, v := range s {
		m[int(v)] = "ok"
	}
	for k, _ := range m {
		s1 = append(s1, string(k))
	}
	return strings.Join(s1, "")
}

// 判断2个字符串所含的字符及数量相同
func IsSame(str1 string, str2 string) bool {
	count := 0
	number := 0
	str3 := RemoveTheSame(str1)
	str4 := RemoveTheSame(str2)
	if len(str3) == len(str4) {
		for _, v := range []rune(str3) {
			if strings.Contains(str4, string(v)) {
				count++
			}
		}
	}
	if count == len([]rune(str3)) {
		for i := 0; i < len([]rune(str3)); i++ {
			if strings.Count(str1, string([]rune(str3)[i])) == strings.Count(str2, string([]rune(str3)[i])) {
				number++
			}
		}
	}
	if number == len([]rune(str3)) {
		return true
	}
	return false
}
自己写了2个函数才做出来,不知道有没有更简洁的办法。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值