两个给定小时之间的迭代器

时间:2017-08-08 09:54:07

标签: java date time hour

我正在面试并得到这个问题:“编写一个函数,得到2个字符串s,t代表2个小时(格式为HH:MM:SS)。众所周知,s早于t。

该函数需要计算两个给定小时之间包含最多2位数的小时数。

例如-s- 10:59:00,t-11:00:59 - 答案 - 11:00:00,11:00:01,11:00:10,11:00:11。

我试图做while循环并且真的卡住了。不幸的是,我没有通过面试。

如上所述,我如何在java中的两个小时之间过去所有时间(每一秒都是新时间)?非常感谢

1 个答案:

答案 0 :(得分:4)

Java 8允许您使用LocalTime。

LocalTime time1 = LocalTime.parse(t1);
LocalTime time2 = LocalTime.parse(t2);

逻辑将要求您计算LocalTime中不同位数的数量,例如

boolean isWinner(LocalTime current) {
    String onlyDigits = DateTimeFormatter.ofPattern("HHmmss").format(current);
    Set<Character> set = new HashSet<>();
    for (int index = 0; index < onlyDigits.length(); index++) {
        set.add(onlyDigits.charAt(index));
    }
    return set.size() <= 2;
}

你可以在这样的时间之间循环

int count = 0;
for (LocalTime current = time1; current.isBefore(time2); current = current.plusSeconds(1)) {
    if (isWinner(current)) {
        count++;
    }
}

那就是它。

这个问题非常适合了解您如何解决问题,以及您是否了解LocalTime API等。