一道牛客网上的编程题。
1 题目描述
小W有一个电子时钟用于显示时间,显示的格式为HH:MM:SS,HH,MM,SS分别表示时,分,秒。其中时的范围为[‘00’,‘01’…‘23’],分的范围为[‘00’,‘01’…‘59’],秒的范围为[‘00’,‘01’…‘59’]。
但是有一天小W发现钟表似乎坏了,显示了一个不可能存在的时间“98:23:00”,小W希望改变最少的数字,使得电子时钟显示的时间为一个真实存在的时间,譬如“98:23:00”通过修改第一个’9’为’1’,即可成为一个真实存在的时间“18:23:00”。修改的方法可能有很多,小W想知道,在满足改变最少的数字的前提下,符合条件的字典序最小的时间是多少。其中字典序比较为用“HHMMSS”的6位字符串进行比较。
2 思路分析
- 将输入字符串按照 ‘:’分割为三个字符串。
- 然后将三个字符串分别转换为 int 类型。
- 对时分秒对应的值分别处理,超出范围的就将十位改为0。
3 代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; ++ i) {
String input = scanner.next();
String[] strs = input.split(":");
int h = Integer.parseInt(strs[0]);
if (h > 23) {
strs[0] = "0" + strs[0].charAt(1);
}
int m = Integer.parseInt(strs[1]);
if (m > 59) {
strs[1] = "0" + strs[1].charAt(1);
}
int s = Integer.parseInt(strs[2]);
if (s > 59) {
strs[2] = "0" + strs[2].charAt(1);
}
System.out.println(strs[0] + ":" + strs[1] + ":" + strs[2]);
}
}
}