问题描述
小明正在玩一个“翻硬币”的游戏。 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。 比如,可能情形是:**oo***oooo 如果同时翻转左边的两个硬币,则变为:oooo***oooo 现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢? 我们约定:把翻动相邻的两个硬币叫做一步操作,那么要求: 输入格式
两行等长的字符串,分别表示初始状态和要达到的目标状态。每行的长度<1000 输出格式
一个整数,表示最小操作步数。 样例输入1
**********
o****o****
样例输出1
5
样例输入2
*o**o***o***
*o***o**o***
样例输出2
1
import java.util.Scanner;

public class Main {

    public static void reverse(char[] A, int i) {
if(A[i] == 'o')
A[i] = '*';
else if(A[i] == '*')
A[i] = 'o';
} public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String A = in.next();
String B = in.next();
int result = 0;
char[] arrayA = A.toCharArray();
char[] arrayB = B.toCharArray();
for(int i = 0;i < arrayA.length - 1;i++) {
if(arrayA[i] != arrayB[i]) {
reverse(arrayA, i);
reverse(arrayA, i + 1);
result++;
}
}
System.out.println(result);
}
}

最新文章

  1. CSS清除浮动float方法总结
  2. java获取当天,前天,明天,本周,本月,本年的开始日期时间和结束日期时间
  3. away3D改造白皮书
  4. c++ STL中的vector与list为什么没有提供find操作?
  5. RecyclerView和PullToRefreshListView的对比
  6. 安装php扩展
  7. loadrunner通过C语言实现自定义字符出现次数截取对应字符串
  8. Markdown基本用法
  9. Oracle RAC LoadBalance
  10. c#操作sqlite(包含中文支持)
  11. Swift编程语言的相关资料
  12. 利用Qt调用计算器
  13. Google 发布 Android 性能优化典范
  14. 深入理解javascript闭包(一)
  15. php 用户访问菜单页面,必须登录,判断用户是否登录
  16. python2到python3的转换以及f.write在python3 中的用法
  17. 关于C#文件复制(递归)
  18. volatile和synchronized的区别和联系
  19. Visual Studio 注释与取消注释快捷键
  20. Python Selenium系列学习

热门文章

  1. 神奇的&#39;license&#39;: &#39;AGPL 3.0&#39;标签报错
  2. vue富文本编辑器TinyMec才是最好用的
  3. React使用hook
  4. c++实现lower_bound和upper_bound
  5. 3.11 Go Struct结构体
  6. 发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!
  7. 转 js自定义事件——Event和CustomEvent
  8. swiper基本使用
  9. npm audit fix 报错
  10. 3D视觉基础(基本原理及3D传感器基本参数)