Gear with Code Java Engineer

编程-时钟

2019-11-21

一道牛客网上的编程题。

1 题目描述

小W有一个电子时钟用于显示时间,显示的格式为HH:MM:SS,HH,MM,SS分别表示时,分,秒。其中时的范围为[‘00’,‘01’…‘23’],分的范围为[‘00’,‘01’…‘59’],秒的范围为[‘00’,‘01’…‘59’]。

img

但是有一天小W发现钟表似乎坏了,显示了一个不可能存在的时间“98:23:00”,小W希望改变最少的数字,使得电子时钟显示的时间为一个真实存在的时间,譬如“98:23:00”通过修改第一个’9’为’1’,即可成为一个真实存在的时间“18:23:00”。修改的方法可能有很多,小W想知道,在满足改变最少的数字的前提下,符合条件的字典序最小的时间是多少。其中字典序比较为用“HHMMSS”的6位字符串进行比较。

2 思路分析

  1. 将输入字符串按照 ‘:’分割为三个字符串。
  2. 然后将三个字符串分别转换为 int 类型。
  3. 对时分秒对应的值分别处理,超出范围的就将十位改为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]);
        }
    }
}

Similar Posts

Comments