[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

  

猜你喜欢

转载自www.cnblogs.com/lautsie/p/12283146.html
今日推荐