问题描述


IT产业人才需求节节攀升。业内巨头百度、阿里巴巴、腾讯(简称BAT)在某海滩进行招聘活动。
招聘部门一字排开。由于是自由抢占席位,三大公司的席位随机交错在一起,形如:
ABABTATT,这使得应聘者十分别扭。
于是,管理部门要求招聘方进行必要的交换位置,使得每个集团的席位都挨在一起。即最后形如:
BBAAATTT 这样的形状,当然,也可能是:
AAABBTTT 等。

现在,假设每次只能交换2个席位,并且知道现在的席位分布,
你的任务是计算:要使每个集团的招聘席位都挨在一起需要至少进行多少次交换动作。

输入是一行n个字符(只含有字母B、A或T),表示现在的席位分布。
输出是一个整数,表示至少交换次数。

比如,输入:
TABTABBTTTT

程序应该输出:
3

再比如,输入:
TTAAABB

程序应该输出:
0

我们约定,输入字符串的长度n 不大于10万

资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。

Java

import java.util.Scanner;public class 交换次数 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);char[] ss = scanner.next().toCharArray();//六种排列组合的方案char[][] c = {{'B','A','T'},{'B','T','A'},{'A','B','T'},{'A','T','B'},{'T','A','B'},{'T','B','A'}};int ans = Integer.MAX_VALUE;for(int i = 0;i < 6;i++) {ans = Math.min(ans,fun(ss,c[i][0],c[i][2],c[i][2]));}System.out.println(ans);}//将整个字符串分为三个区域public static int fun(char[] ss,char A,char B,char C) {//A区域中a的个数int a = 0;//B区域中b的个数int b = 0;//A区域中非a的个数int Abc = 0;//A区域中b的个数int Ab = 0;//B区域中a的个数int Ba = 0;//B区域中c的个数int Bc = 0;int len = ss.length;//求出A和B两个区域占的大小for(int i = 0;i < len;i++) {if(ss[i] == A) a++;if(ss[i] == B) b++;}for(int i = 0;i < a;i++) {if(ss[i] != A) Abc++;if(ss[i] == B) Ab++;}for(int i = a;i < a + b;i++) {if(ss[i] == A) Ba++;if(ss[i] == C) Bc++;}//最小交换次数是:将A区域非a的交换出去,B区域非b的交换出去//因为A区域中有b,B区域中有a,他们直接交换就行,再减去重复的交换次数return Abc + Bc + Ba - Math.min(Ba, Ab);}}

第九届 蓝桥杯 决赛 交换次数相关推荐

  1. 第九届蓝桥杯决赛JavaC组真题——详细答案对照(完整版)

    目录 测试数据下载地址: 标题:年龄问题 标题:海盗与金币 标题:全排列 标题:约瑟夫环 标题:交换次数 标题:自描述序列 测试数据下载地址: [https://download.csdn.net/d ...

  2. 2018第九届蓝桥杯-决赛-Java大学-C组

    标题:年龄问题 s夫人一向很神秘.这会儿有人问起她的年龄,她想了想说: "20年前,我丈夫的年龄刚好是我的2倍,而现在他的年龄刚好是我的1.5倍". 你能算出s夫人现在的年龄吗? ...

  3. 整理玩具 第九届蓝桥杯决赛第四题 java实现

    标题:整理玩具 小明有一套玩具,一共包含NxM个部件.这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件. 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数 ...

  4. 2018省赛第九届蓝桥杯真题C语言B第四题题解 测试次数

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机 ...

  5. problem b: 一年中的第几天_第九届蓝桥杯B组试题

    1. 标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. "============= ...

  6. 第九届蓝桥杯C++B组

    第九届蓝桥杯C++B组C++与python解法 1.标题:第几天 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余 ...

  7. 关于2018年第九届蓝桥杯省赛(江苏赛区)

    为啥到现在才写呢...就是懒,是真的懒.题也没刷几个 (下面题目的超链接转自这里,并不是本人解法..只是因为有题目还有题解) 4.1举行的蓝桥杯也可以说是"愚人杯"了 早早的跟同学 ...

  8. 第九届蓝桥杯大赛软件类国赛

    文章目录 第九届蓝桥杯大赛软件类国赛 国赛C++ A组 三角形面积 阅兵方阵 找假币 约瑟夫环 -- important 自描述序列 -- todo 采油 -- todo 国赛C++ B组 换零钞 激 ...

  9. 2018省赛第九届蓝桥杯真题C语言B组第十题题解 乘积最大

    2018第九届蓝桥杯C++省赛B组[最新题解汇总] 标题:乘积最大 给定N个整数A1, A2, ... AN.请你从中选出K个数,使其乘积最大.   请你求出最大的乘积,由于乘积可能超出整型范围,你只 ...

最新文章

  1. R语言ggplot2可视化在X轴上可视化时间标签实战:可视化时间标签、对时间标签进行旋转
  2. perl导入文本至mysql_Perl 脚本实现MySQL 异机导入导出-阿里云开发者社区
  3. RequestMapping || @RequestMapping 模糊匹配功能
  4. Linux zip 加密压缩
  5. 介绍ASP.NET控件ID
  6. pytorch之with torch.no_grad
  7. 这个开源数据集要在全球扩大中文NLP影响力,你也能来做贡献!
  8. webpack笔记_(1)_webpack 安装
  9. linux内核奇遇记之md源代码解读之一
  10. 如何安装PANABIT?
  11. 用requests下载视频
  12. ubuntu16.04+cuda8.0安装pytorch
  13. 配电管理地理信息系统解决方案
  14. 怎样校验MD5码及sha1码数值(适用于Windows及Linux平台)
  15. aspx创建控件时出错,服务器标记的格式不正确
  16. 《脱颖而出——成功网店经营之道》一1.3 两个人的战争:二东之争
  17. iOS开发之支付宝集成
  18. vb.net 教程 3-2 窗体编程之窗体 4
  19. 用户属性标签系统建设思路以及结构
  20. 触目惊心!2017年化工行业事故203起死亡238人!附重大事件回顾

热门文章

  1. 使用 Docker 来快速上手中文 Stable Diffusion 模型:太乙
  2. oracle java.sql.SQLException: ORA-00911: 无效字符和ORA-01017: invalid username/password; logon denied
  3. PHP开发环境搭建和phpinfo函数
  4. 5G NRRC Inactive state是什么状态?
  5. 使用素描图像识别人脸
  6. HDU 2708.Vertical Histogram
  7. HDU - 1431 素数回文 【素数打表】+【判断回文】
  8. CrossWalk - Android 动态加载so库文件
  9. LeetCode - 点菜展示表
  10. jQuery使用ajaxSubmit()提交表单