The idea to solve this problem is to first, get the total number of bits then iterate through each bit and if the previous bit is 1, then deduct 2 from the total number of bits. If it’s a 0, then deduct only 1. In the end, if the total number of bits is equal to 1, then last character must be a 1-bit character.
class Solution {
fun isOneBitCharacter(bits: IntArray): Boolean {
if(bits.size == 0) return false
if(bits.size == 1) return bits[0] == 0
if(bits.size == 2) return bits[0] != 1
var totalChars = bits.size
var i = 1
while(i < bits.size){
if(bits[i-1] == 1){
totalChars -= 2
i++
}else{
totalChars -= 1
}
i++
}
return totalChars == 1
}
}
Runtime: 168 ms, faster than 60.00% of Kotlin online submissions for 1-bit and 2-bit Characters.
Memory Usage: 33.9 MB, less than 100.00% of Kotlin online submissions for 1-bit and 2-bit Characters.