铜铜铜铜铜铜

核心内容摘要

SK-II解码女性肌密:083,不止是数字,更是致臻美肌的答案
探索《私人家教》的神秘面纱:凯·帕克笔下的多重解读

探寻“超碰97”的独特魅力:不止是视觉盛宴,更是情感共鸣

题目来源U535982 C-小梦的AB交换 - 洛谷题目描述小梦有一个长度为 2∗n 的 AB 串 s即 s 中只包含 A 和 B 两种字符且其中恰好有 n 个 A 和 n 个 B。

他可以对 s 执行以下操作∙ 选择 i,j (1≤i,j≤2⋅n,ij)并交换 si​ 和 sj​。

他想知道需要至少多少次操作才能使得 s 满足相邻的字符不相同请你帮他算一算吧。

输入格式本题有多组测试数据。

输入的第一行包含一个正整数 T表示数据组数。

接下来包含 T 组数据每组数据的格式如下第一行一个正整数 n表示 s 长度的一半。

第二行一个长度为 2∗n 的字符串 s保证只由 A, B 两种字符构成。

输出格式对于每组测试数据在单独的一行输出一个整数表示最少进行的操作次数。

输入输出样例输入 #1复制2 3 AAABBB 3 ABAABB输出 #1复制1 1说明/提示【样例 1 解释】交换 s2​A 和 s5​B得到 s ABABAB满足题意一次交换即可。

【数据范围】令 N 表示 T 组数据中 n 的总和。

对于 50% 的数据有T1,1≤N≤3。

对于所有的测试数据有 1≤T≤100,1≤N≤106。

题解import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); int T sc.nextInt(); // 读取测试数据组数 while (T--

{ int n sc.nextInt(); // 每组数据的n String s sc.next(); // 每组数据的字符串s // 构建两种合法的交替字符串 // 形式1B开头交替排列B A B A... StringBuilder pattern1 new StringBuilder(); // 形式2A开头交替排列A B A B... StringBuilder pattern2 new StringBuilder(); for (int i 0; i 2 * n; i) { if (i % 2

{ // 偶数位从0开始 pattern

append(B); pattern

append(A); } else { // 奇数位 pattern

append(A); pattern

append(B); } } // 计算原字符串与两种形式的差异数交换次数差异数/2 int cost1 calcDiff(s, pattern

toString()); int cost2 calcDiff(s, pattern

toString()); // 输出最小交换次数 System.out.println(Math.min(cost1, cost

); } sc.close(); } // 计算原字符串与目标模式的差异数返回交换次数差异数/2 private static int calcDiff(String s, String pattern) { int diff 0; for (int i 0; i s.length(); i) { if (s.charAt(i) ! pattern.charAt(i)) { diff; } } return diff / 2; }

先获取数据组数

然后我们可以用循环来获取数据

建立两种模式来实现这个字母不同的结果最后再比较这个操作过后的字符串和原来的字符串的区别即可注释s.charAt(i)是获取数组中对应的字母

9.1成人看片-9.1成人看片应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123