C练题笔记之:Leetcode-717. 1比特与2比特字符

题目:

有两种特殊字符:

第一种字符可以用一个比特 0 来表示
第二种字符可以用两个比特(10 或 11)来表示、
给定一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一位字符,则返回 true 。

示例 1:

输入: bits = [1, 0, 0]
输出: true
解释: 唯一的编码方式是一个两比特字符和一个一比特字符。
所以最后一个字符是一比特字符。
示例 2:

输入: bits = [1, 1, 1, 0]
输出: false
解释: 唯一的编码方式是两比特字符和两比特字符。
所以最后一个字符不是一比特字符。
 

提示:

1 <= bits.length <= 1000
bits[i] == 0 or 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/1-bit-and-2-bit-characters
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

结果:

C练题笔记之:Leetcode-717. 1比特与2比特字符

解题思路:

因为数字存在的方式只有三种:0,10,11.而只有0是单bit。

因此直接模拟从头开始如果遇到1,i 就移动两位,如果是0就移动一位,最后看i停留在最后一个数字还是超过最后一个数字就可以判断最后一个是单还是双

代码:

bool isOneBitCharacter(int* bits, int bitsSize){
    int i;
    for (i = 0; i < bitsSize - 1; ) {
        if (bits[i] == 0) {
            i += 1;
        } else {
            i += 2;
        }
    }
    if (i == bitsSize) {
        return false;
    }
    return true;
}

上一篇:[C#]in/out关键字与协变逆变


下一篇:[dsu on tree] 2020CCPC长春F Strange Memory