我一直在寻找一种解决方案来查找字符串中的重复字符,并且我对按位运算的解决方案很感兴趣。
我发现了这样一个按位运算的变体。但在其中,搜索发生在 ASCII 表的 az 范围内。
func HasDuplicates(str string) (string, bool) {
checker := 0
for _, char := range str {
val := char - 'a'
fmt.Println(val)
if (checker & (1 << val)) > 0 {
fmt.Printf("'%c' is Duplicate\n", char)
return str, false
}
checker |= 1 << val
}
return str, true
}
是否有可能像上面的例子一样,只针对随机的 unicode 字符串(象形文字、表情符号等)制定一个通用的解决方案?
SMILET
相关分类