AcWing 1208. 翻硬币Java
原题链接
简单
作者:
长街听风
,
2021-01-25 17:13:18
,
所有人可见
,
阅读 299
Java 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] source = scanner.nextLine().toCharArray();
char[] target = scanner.nextLine().toCharArray();
int res = 0;
//由于题目保证有解,故最后一枚硬币经过前面的操作好一定时相同的,不用比较了,故i<source.length-1即可
//否则写成i<source.length,则turn(source,i+1)时,i+1将出现下标越界
for(int i = 0;i < source.length - 1;i++){
if(source[i] != target[i]){//当前硬币与目标状态不同,翻转它和它右边的硬币
turn(source,i);
turn(source,i+1);
res++;//操作次数加一
}
}
System.out.println(res);
}
//用于翻转硬币
private static void turn(char[] source, int i) {
if(source[i] =='*') source[i] = 'o';
else source[i] = '*';
}
}