蓝桥杯历届试题:翻硬币——Java实现
题目:
以下是输入输出格式:
这里我也没多想,看到了输入的字符串不是固定的,但是我们需要对其进行元素的操作,马上就想到了Java中字符串和字符数组之间的转换——toCharArray()方法。
以下是Java代码:
import java.util.Scanner;
//历届试题 翻硬币
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str1,str2;
str1 = in.nextLine();
str2 = in.nextLine();
//定义两个固定长度的字符数组
char arr1[] = new char[str1.length()];
char arr2[] = new char[str1.length()];
//字符串转化为字符数组
arr1 = str1.toCharArray();
arr2 = str2.toCharArray();
int index = 0;
int sum=0;
//找到两个字符数组中第一个不同元素的位置
for(int a=0;a<arr1.length;a++) {
if(arr1[a] != arr2[a]) {
index = a;
break;
}
}
//从第一个不同位置的元素开始转换
for(int a=index;a<arr1.length;a++) {
if(arr1[a] != arr2[a]) {
//记录转换了几次
sum++;
if(arr1[a] != '*') {
arr1[a] ='*';
if(arr1[a+1] != '*') {
arr1[a+1] = '*';
}else {
arr1[a+1] = 'o';
}
}else {
arr1[a] = 'o';
if(arr1[a+1] != '*') {
arr1[a+1] = '*';
}else {
arr1[a+1] = 'o';
}
}
}
}
//输出翻硬币的总次数
System.out.println(sum);
}
}
用到了挺多if-else,从资源利用上来说算法并不是太好却是比较容易想到和理解的方法,这也是我大脑里马上呈现的算法。如果有小伙伴有更好的算法想沟通交流的话可以在文章下方评论一下哈。