首页 > 其他 > 详细

[LeetCode] 1-bit and 2-bit Characters

时间:2017-10-31 16:25:29      阅读:232      评论:0      收藏:0      [点我收藏+]

We have two special characters. The first character can be represented by one bit 0. The second character can be represented by two bits (10 or 11).

Now given a string represented by several bits. Return whether the last character must be a one-bit character or not. The given string will always end with a zero.

Example 1:

Input: 
bits = [1, 0, 0]
Output: True
Explanation: 
The only way to decode it is two-bit character and one-bit character. So the last character is one-bit character.

Example 2:

Input: 
bits = [1, 1, 1, 0]
Output: False
Explanation: 
The only way to decode it is two-bit character and two-bit character. So the last character is NOT one-bit character.

Note:

  • 1 <= len(bits) <= 1000.
  • bits[i] is always 0 or 1.

我们有两个特殊字符。第一个字符可以由一个位0表示。第二个字符可以由两个位(10或11)表示。

现在给出一个由几位表示的字符串。返回最后一个字符是否必须是一位字符。给定的字符串将始终以零结尾。

思路:使用蛮力判断每一个特殊字符的,如果是两个10、11,则第一位一定是1,让bit数组跳过一个字符即i=i+2

如果是一个字符0,则让bit数组继续遍历0后的下一个字符。直到判断到倒数第二个数字为止,如果这个数字是1,则返回false,如果这个数字是0,则返回true。

class Solution {
public:
    bool isOneBitCharacter(vector<int>& bits) {
        int n = bits.size(), flag = true;
        for (int i = 0; i != n;) {
            if (bits[i] == 1) {
                if (i == n - 2) {
                    flag = false;
                    break;
                }
                else
                    i = i + 2;
            }
            else {
                if (i == n - 2) {
                    flag = true;
                    break;
                }
                else
                    i = i + 1;
            }
        }
        return flag;
    }
};
// 3 ms

 

[LeetCode] 1-bit and 2-bit Characters

原文:http://www.cnblogs.com/immjc/p/7761904.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!