[리트코드] UTF-8 Validation

박형진·2021년 12월 25일
0

https://leetcode.com/problems/utf-8-validation/


1. 전체 코드

class Solution:
    def validUtf8(self, data: List[int]) -> bool:
        def check(n):
            if start + n >= len(data):
                return False
            for i in range(start + 1, start + n + 1):
                k = bin(data[i])[2:].zfill(8)
                if k[0:2] != '10':
                    return False
            return True
        start = 0
        while start < len(data):
            first = bin(data[start])[2:].zfill(8)
            # 바이트 수 = 1
            if first[0] == '0':
                start += 1
            # 2
            elif (first[0:3] == '110') and check(1):
                start += 2
            # 3
            elif (first[0:4] == '1110') and check(2):
                start += 3
            # 4
            elif (first[0:5] == '11110') and check(3):
                start += 4
            else:
                return False
        return True

2. 후기

첫 번째 자리의 바이트가 되는 first을 확인하고 first+k을 건너 뛴 다음 first를 찾는다. 위의 방식을 data의 길이를 초과하지 않을 때까지 반복해야 한다.

while start < len(data)start += 증가로 위의 알고리즘을 구현했다.

profile
안녕하세요!

0개의 댓글