[leetcode]UTF-8 Validation
位运算
class Solution:
    def validUtf8(self, data: List[int]) -> bool:
        multiByteCount = 0
        for byte in data:
            if multiByteCount > 0: # in multi-byte
                # start with 10
                if byte & 0x80 == 0x80 and byte | 0xbf == 0xbf:
                    multiByteCount -= 1
                else:
                    return False
            elif byte & 0x80 == 0x80: # start with 1, maybe multi-byte
                multiByteCount = 0
                mask = 0x80 >> 1
                while mask > 0 and byte & mask == mask:
                    mask = mask >> 1
                    multiByteCount += 1
                if multiByteCount > 3 or multiByteCount == 0:
                    return False
            else: # start with 0
                continue
        
        if multiByteCount > 0:
            return False
        
        return True
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号