输入一个6位数,给出这6位数能拼出的最晚时间和最早时间,以逗号隔开。
输入样例:
123456
输出样例:
235641,123456
/**
* 算法思想
* 1、创建两个相同的数组 元素长度都相同、创建一些变量分别代表最大值、最小值、和这些数字的索引
* 2、one two 代表数组内两个数字组成的两位数
* 3、通过冒泡循环一次得到数组里的两位数one two 依次做出判断是否符合条件,如果符合则one、two分别赋值给对应的变量
* 如果不符合则寻找下一位两位数、并得到两个数字的索引位
* 4、出循环之后、需要把得到的索引位置上的数字赋值为0 、 9 (因为已经使用过的数字不得在使用第二次)
*
*/
import java.util.Scanner;
public class testone {
public static void main(String[] args) {
int[] arr = new int[6];
int[] arr1 = new int[6];
Scanner input = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i] = input.nextInt();
arr1[i] = arr[i];
}
int shi = 0;//寻找最大值
int fen = 0;
int miao = 0;
int minshi = 24;//寻找最小值
int minfen = 60;
int minmiao = 60;
int one = 0;//通过for循环任意两个数组成两位数
int two = 0;
int index = 0;//找到最后一次使用的数字下标 通过索引为 赋值为0
int index1 = 0;
int index3 = 0;
int index4 = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (i == j) {
continue;
}
one = arr[i] * 10 + arr[j];
if (one > 0 && one < 24 && one > shi) {
shi = one;
index = i;
index1 = j;
}
if (one > 0 && one < 60 && one > fen) {
fen = one;
index3 = i;
index4 = j;
}
}
}
arr[index] = 0;
arr[index1] = 0;
arr[index3] = 0;
arr[index4] = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (i == j) {
continue;
}
two = arr[i] * 10 + arr[j];
if (two > 0 && two < 60 && two > miao && two < fen) {
miao = two;
}
}
}
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1.length; j++) {
if (i == j) {
continue;
}
one = arr1[i] * 10 + arr1[j];
if (one > 0 && one < 24 && one < minshi) {
minshi = one;
index = i;
index1 = j;
}
}
}
arr1[index] = 9;
arr1[index1] = 9;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1.length; j++) {
if (i == j) {
continue;
}
one = arr1[i] * 10 + arr1[j];
if (one > 0 && one < 60 && one < minfen) {
minfen = one;
index3 = i;
index4 = j;
}
}
}
arr1[index3] = 9;
arr1[index4] = 9;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
if (i == j) {
continue;
}
two = arr1[i] * 10 + arr1[j];
if (two > 0 && two < minmiao) {
minmiao = two;
}
}
}
System.out.print(shi);
System.out.print(fen);
System.out.print(miao);
System.out.print(",");
System.out.print(minshi);
System.out.print(minfen);
System.out.print(minmiao);
}
}
以上代码运行输入的6位数数字,在找寻最早时间的时候有一个问题,如果最早的时、分已经找到,四位数字被占用,那么我的思路是把这四位数字赋值为9,最后通过循环找到秒数,如果最后的两位数小于60那么就能得到最终的时间;如果大于60,那么循环将不会为秒数赋值,将会得到我一开始赋值的60秒。