刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

村庄与部落 

描述:

有n个村庄坐落成一条直线,A和B两个部落生活在这里。每个村庄要么无人居住,要么被两个部落之一所占据。 

如果连续n个无人居住的村庄两侧都是被部落A占据的村庄,那么这n个村庄也视作被部落A占据;对于部落B也是如此。 

请求出被部落A和B分别占据的村庄个数。 

输入:

第一行,一个整数T,代表测试数据的组数 

接下来是T组数据:每组数据仅有一行,包含一个字符串,代表每个村庄的状态 

字符串仅包含'A'、'B'和'.'三种字符,分别代表村庄被部落A占据、被部落B占据,以及无人居住。 

输出:

对于每组数据,输出一行,包含两个整数,分别代表被部落A和B控制的村庄数量

使用微信搜索喵呜刷题,轻松应对考试!

答案:

对于每组数据,首先遍历整个字符串,遇到'A'则将部落A的数量加一,遇到'B'则将部落B的数量加一。如果遇到'.',则需要判断它两侧是否为同一部落,如果是,则继续累加该部落的数量,否则重置计数。最后输出部落A和部落B的数量。

解析:

【喵呜刷题小喵解析】:
这个问题可以通过遍历字符串来解决。首先,我们定义两个变量,分别表示部落A和部落B的数量。然后,我们遍历字符串中的每个字符,如果遇到'A',则将部落A的数量加一;如果遇到'B',则将部落B的数量加一。如果遇到'.',则需要判断它两侧是否为同一部落,如果是,则继续累加该部落的数量,否则重置计数。最后,输出部落A和部落B的数量即可。

具体实现时,我们可以使用一个循环来遍历字符串,同时维护两个计数器,分别表示部落A和部落B的数量。在遍历过程中,如果遇到'.',则判断它两侧是否为同一部落,如果是,则继续累加该部落的数量,否则重置计数。最后,输出两个计数器的值即可。

需要注意的是,由于题目中规定了连续n个无人居住的村庄两侧都是被同一部落占据的村庄也视作被该部落占据,因此在判断'.'的两侧是否为同一部落时,我们需要判断其前后两个字符是否相等。如果相等,则说明该'.'两侧是同一部落,继续累加该部落的数量;如果不等,则说明该'.'两侧不是同一部落,需要重置计数。
创作类型:
原创

本文链接:村庄与部落  描述: 有n个村庄坐落成一条直线,A和B两个部落生活在这里。每个村庄要么无人居住,要么

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share