luoheng
10/6/2019 - 7:32 AM

numJewelsInStones

func numJewelsInStones(J string, S string) int {
    hash := uint64(0)
    length := len(J)
    for i := 0; i < length; i++ {
        if J[i] <= 'Z' {
            hash |= 1 << uint64(J[i] - 'A' + 1)
        } else {
            hash |= 1 << uint64(J[i] - 'a' + 27)
        }
    }
    sum := 0
    length = len(S)
    for i := 0; i < length; i++ {
        if S[i] <= 'Z' && hash&(1<<uint64(S[i] - 'A' + 1)) != 0 ||
        S[i] >= 'a' && hash&(1<<uint64(S[i] - 'a' + 27)) != 0 {
            sum++
        }
    }
    return sum
}