두 개의 특수 문자가 있다고 가정합니다. 첫 번째 문자는 하나의 비트 0으로 나타낼 수 있습니다. 두 번째 문자는 (10 또는 11)과 같이 두 비트로 나타낼 수 있습니다. 따라서 여러 비트로 표시되는 문자열이 있는 경우. 마지막 문자가 1비트 문자여야 하는지 여부를 확인해야 합니다. 주어진 문자열은 항상 0으로 끝납니다.
따라서 입력이 [1,0,0]과 같으면 출력은 True가 됩니다. 디코딩하는 유일한 방법은 2비트 문자(10)와 1비트 문자(0)뿐입니다. 따라서 마지막 문자는 1비트 문자입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 비트 크기> 1일 때 수행
- current :=비트의 첫 번째 요소, 다음 비트에서 첫 번째 요소 삭제
- 전류가 1과 같으면
- 비트에서 첫 번째 요소 삭제
- 비트의 크기가 0이면
- 거짓을 반환
- bits[0]이 0과 같으면 true를 반환하고, 그렇지 않으면 false를 반환
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def isOneBitCharacter(self, bits): while len(bits) > 1: current = bits.pop(0) if current == 1: bits.pop(0) if len(bits) == 0: return False return bits[0] == 0 ob = Solution() print(ob.isOneBitCharacter([1,0,0]))
입력
[1,0,0]
출력
True