把对应的位置零,比如s中有个字母'e','e' - 'a' = 4,那么就是把mask的第四位置零。至于这样做的目的就要看上下文了,从前的面的代码看,它是计算s中的的小写字母的数目,记录那个字母出现了几次,那么mask的意义应该是记录26个小写字母中哪些字母曾经出现。到时候可以用与操作来验证,哪一位是0,就表示相应的字母曾经出现过。

解决方案 »

  1.   

    to:beatingHeart(奔腾的昕) 
    这句mask &= ~(1 << ch)能不能具体解释以下!
      

  2.   

    ch = 3 // for example
    1             0000 ... 0001 
    1<<4          0000 ... 1000
    ~(1<<4)       1111 ... 0111since mask=1  1111 ... 1111 & ~(1<<4)
    so, now mask = 1111 ... 0111   重复以上步骤
      

  3.   

    多谢beatingHeart(奔腾的昕) ,我把 << 操作符的意义搞错了,现在明白了!