Была там задача Panagram, определить, является ли предложение панаграмой или нет и я там нашёл одно комьюнити решение
func IsPangram(s string) bool {
var bs int32
for i := 0; i < len(s); i++ {
c := (s[i] & 0xdf) - 'A'
if c > 25 || c < 0 {
continue
}
bs |= 1 << c
}
return bs == 0x3ffffff
}
И никак не могу понять, почему 0xdf. Откуда он это взял...Кто может объяснить?
В ascii lowercase и uppercase отличаются одним битом — 6-м справа. x & 0xdf очищает этот бит, приводя к uppercase
Обсуждают сегодня