leetcode----1位和2位字符问题
2018-03-23 22:14
183 查看
题目中说给出一个数组,里面只有0和1这两种字符,现在有两种角色在里面,一种是0,另一种是10或11,要返回数组最后是否是只有一个字符,给定的数组或字符串都是以0结尾的。
例如: [1,0,0]这里面只能是10和0的组合,最后一个为单字符,所以返回true
[1,1,1,0]这里面只能是11和10的组合,所以最后是10这个组合,返回false
现在已知的是最后一位是0确定了,就是验证一下到底是一位还是两位的问题。
如果倒数第二位为0的话,不论前面是0或1,也不论字符个数为奇数还是偶数, 它最后总是一个字符,因为0可以自己作为单字符,也可以在前面与1组合。
现在只考虑剩下的一种情况,就是倒数第二位为1的话,倒数第三位为0的话,那么只能最后两位匹配,所以不是单字符,如果倒数第三位为1的话,还要看倒数第四位,如果为0,则倒数第三位与倒数第二位1匹配,可以返回最后单字符,如果倒数第四位为1,还要看倒数第五位。依次类推。
总结一下 就是从倒数第二位开始,如果为1,看遇到下一个0之前看是奇数个1还是偶数个1,如果偶数个1,则最后返回单字符,如果奇数个1,不会返回单字符。
代码:
class Solve{
public boolean isOneBitCharacter(int[] bits){
int i=bits.length-2;
while(i>=0&&bits[i]>0)
i–;
if((bits.length-2-i)%2==0)
return ture;
else
return false;
}
}
例如: [1,0,0]这里面只能是10和0的组合,最后一个为单字符,所以返回true
[1,1,1,0]这里面只能是11和10的组合,所以最后是10这个组合,返回false
现在已知的是最后一位是0确定了,就是验证一下到底是一位还是两位的问题。
如果倒数第二位为0的话,不论前面是0或1,也不论字符个数为奇数还是偶数, 它最后总是一个字符,因为0可以自己作为单字符,也可以在前面与1组合。
现在只考虑剩下的一种情况,就是倒数第二位为1的话,倒数第三位为0的话,那么只能最后两位匹配,所以不是单字符,如果倒数第三位为1的话,还要看倒数第四位,如果为0,则倒数第三位与倒数第二位1匹配,可以返回最后单字符,如果倒数第四位为1,还要看倒数第五位。依次类推。
总结一下 就是从倒数第二位开始,如果为1,看遇到下一个0之前看是奇数个1还是偶数个1,如果偶数个1,则最后返回单字符,如果奇数个1,不会返回单字符。
代码:
class Solve{
public boolean isOneBitCharacter(int[] bits){
int i=bits.length-2;
while(i>=0&&bits[i]>0)
i–;
if((bits.length-2-i)%2==0)
return ture;
else
return false;
}
}
相关文章推荐
- java中leetcode题目求字符创匹配的问题
- [LeetCode] Isomorphic Strings - 字符串操作:数组计数字符个数问题
- Leetcode全字符问题
- LeetCode 44 Wildcard Matching(字符串匹配问题)
- leetCode全字符问题Java版
- LeetCode-717:1-bit and 2-bit Characters (1位和2位编码元素)-- easy
- 过滤器处理接受参数字符乱码问题
- <LeetCode OJ> (1 / 15 / 16 / 18) NSum问题集合
- [LeetCode] Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串
- Leetcode之Unique Paths 问题
- c语言中 字符数组的问题 很纠结啊 请教高手!!!
- 关于java字符的编码问题学习
- 数据库查询中的特殊字符的问题
- 【LeetCode题目记录-3】字符串中最长的没有重复字符的子串
- ajax和webservice交互特殊字符处理和时间问题解决
- 字符追加 字符追加 \u0 问题
- leetcode-55 Jump Game 最远距离问题
- Cout输出字符地址问题
- Python中文字符问题
- 使用echarts的字符云显示的title与name不符合的问题