算法题1—翻硬币

    技术2025-07-13  6

    题目要求: 分析: 翻硬币是将初始状态的字符串转变为目标状态的字符串,只有两个字符串不同才进行转换,且每次只能转换一次,一次只能转换相邻的两个字符

    代码:

    package net.dc.algchallenge; import java.util.Arrays; public class OverturnCoin { public static void main(String[] args) { String str = "**********"; String target = "o****o****"; System.out.println(String.format("总共翻转:%d次", overturnCount(str, target))); str = "*o**o***o***"; target = "*o***o**o***"; System.out.println(String.format("总共翻转:%d次", overturnCount(str, target))); } public static int overturnCount(String str, String target) { char[] strArr = str.toCharArray(); char[] targetArr = target.toCharArray(); int count = 0; k: while (!Arrays.equals(strArr, targetArr)) { for (int i = 0; i < strArr.length - 1; i++) { if (strArr[i] != targetArr[i]) { strArr[i] = targetArr[i]; if (strArr[i + 1] == '*') { strArr[i + 1] = 'o'; } else if (strArr[i + 1] == 'o') { strArr[i + 1] = '*'; } count++; continue k; } } } return count; } }

    运行结果: 如有错误,敬请指正

    Processed: 0.010, SQL: 9