717. 1-bit and 2-bit Characters
2017-11-29 21:23
323 查看
We have two special characters. The first character can be represented by one bit
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:
解题思路:题目的大意是,数组由one bit 0和tow bit 10或11组成,判断最后一位是由one bit组成的,返回true,tow bit组成的返回false两种情况: 1.首先由后往前推,如果后两位都为0的话,那肯定是true 2. 如果倒数第二位为1的话,那就得判断后面的最后一位是10产生的还是0产生的。 思路为:我们知道两位的时候是10或者11,在数组中如果碰到1,则必为two bit .则跳过1后面的那位,直接到1后面的后面那位再判定。这样一直递归下去,看最后一位是否是被跳过的。如果是被跳过,那就是two bit产生的,返回falseclass Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
if (bits[bits.size()-1] == 0 && bits[bits.size() - 2] == 0) return true;
int i = 0;
return dfs(bits, i);
}
private:
bool dfs(vector<int>& bits, int idx) {
if (idx == bits.size()) return false;
if (idx == bits.size() - 1 && bits[idx] == 0) return true;
if (bits[idx] == 1) return dfs(bits, idx + 2);
else
return dfs(bits, ++idx);
}
};
0. The second character can be represented by two bits (
10or
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
0or
1.
解题思路:题目的大意是,数组由one bit 0和tow bit 10或11组成,判断最后一位是由one bit组成的,返回true,tow bit组成的返回false两种情况: 1.首先由后往前推,如果后两位都为0的话,那肯定是true 2. 如果倒数第二位为1的话,那就得判断后面的最后一位是10产生的还是0产生的。 思路为:我们知道两位的时候是10或者11,在数组中如果碰到1,则必为two bit .则跳过1后面的那位,直接到1后面的后面那位再判定。这样一直递归下去,看最后一位是否是被跳过的。如果是被跳过,那就是two bit产生的,返回falseclass Solution {
public:
bool isOneBitCharacter(vector<int>& bits) {
if (bits[bits.size()-1] == 0 && bits[bits.size() - 2] == 0) return true;
int i = 0;
return dfs(bits, i);
}
private:
bool dfs(vector<int>& bits, int idx) {
if (idx == bits.size()) return false;
if (idx == bits.size() - 1 && bits[idx] == 0) return true;
if (bits[idx] == 1) return dfs(bits, idx + 2);
else
return dfs(bits, ++idx);
}
};
相关文章推荐
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters 1、2位字符
- 717. 1-bit and 2-bit Characters(数组)
- leetcode 717. 1-bit and 2-bit Characters 编码判断问题 + 贪心算法 + 遍历即可
- LeetCode 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- LeetCode717. 1-bit and 2-bit Characters 解题
- 717. 1-bit and 2-bit Characters--Python
- [Leetcode] 717. 1-bit and 2-bit Characters 解题报告
- LWC 56:717. 1-bit and 2-bit Characters
- 【LeetCode】717. 1-bit and 2-bit Characters(一位数和两位数)
- LeetCode-717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters
- LeetCode-717. 1-bit and 2-bit Characters
- 717. 1-bit and 2-bit Characters