您的位置:首页 > 其它

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode