在线编程解题之神秘消失

一、题目详情

在书架上摆着一些书,这些书只有两种颜色,要么是黄色,要么是蓝色,突然某一天这些书被施了魔法,如果一本黄色和一本蓝色的书挨着,这两本书就会消失不见,然后右边的书会往左边移动,直到和左边的书挨着,如果这两本颜色不同,这两本书又会神秘消失。现在给你一个只包含A和B的字符串s(1<=|s|<=100000),其中A表示黄色的书,B表示蓝色的书,问这n本书中最多会消失多少本书。
输入一个字符串s,s中A表示黄色的书,B表示蓝色的书
输出最多会消失多少本书

示例1

输入:
"AABB"
输出:
4

二、解题思路

解题主要找的是问题的关键点和对问题的理解程度,这道题的关键点有两个:

关键点一:消失。

如果一本黄色和一本蓝色的书挨着,这两本书就会消失不见。解读一下就是A与B挨着就会同时消失。再理解一下就是,消失的书本数量是2的倍数。

关键点二:挨着。

不管有多少本书,也不管怎么放,必定会有一本黄色和一本蓝色的书挨着。比如一种极端的情况就是示例中展示的:“AABB”。而AB挨着的结果就是AB同时消失。再换一个思路,如果AB不想不会同时消失,唯一的可能性就是你只有A或者只有B。

根据题目,结合关键点,可以得出以下结论:

  1. N本书摆在书架上,最后只会剩下A或者B(依据关键点二)
  2. 消失书本的数量是A或者B数量的两倍(依据关键点一)

时间复杂度:O(1)

空间复杂度:O(1)

上一篇:python selenium,PhantomJS运用 抓取滚动条滚动加载的页面, js动作操作,模拟登陆


下一篇:Provisioning Services 7.6 入门到精通系列之五:PVS控制台安装