阿里云3.17笔试第二题理解

题目:给定一个仅由'0'和'1'组成的字符串,分别求长度为奇数和偶数的子串压缩后是回文串的个数,字符串压缩是指将连续且相同的字符仅保留1个,例如011000110压缩后为01010,是回文串。

思路:如果一个子串两端的字符相同,则压缩后一定是回文串,否则,压缩后一定不是回文串。所以通过一次遍历,用4个变量记录遍历中遇到的奇数位和偶数位的'0'和'1'的个数,再根据当前位的奇偶性和值,给结果增加对应的数值即可。时间复杂度为O(n)。

补充解释:例如当前位是奇数位,且值为'0',之前已经记录的奇数位且值为0的个数是odd0,偶数位且值为'0'的个数是even0,则到目前为止odd0变为odd0+1,even0不变。然后要返回的结果中,奇数长度的回文串的个数加上odd0,偶数长度的回文串的个数加上even0。
全部评论
厉害,看懂了,谢谢佬
点赞
送花
回复
分享
发布于 03-17 18:14 北京

相关推荐

8 18 评论
分享
牛客网
牛客企业服务